頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


Metalでテクスチャを貼る

Apple謹製サンプルコードにMetalTextureQuadというのがあってね。これを参考にしてオブジェクトにテクスチャを貼ってみたのよ。

ところがね、、、

テクスチャを貼ったロボット(修正前)

↑あら?おかしい。一応オブジェクトに貼り付いてはいるんだけど座標がなんだかおかしいような?上下を反転させてみてもやっぱり変なまま。

もしかしてBlenderでのデータ作成で間違えてたか?と思って同じデータをOpenGL ES使って確認してみる。

OpenGL ESでテクスチャを貼ったロボット

↑ちゃんと表示されてる。テクスチャの座標などのデータは問題なくて、やっぱりMetalでのコードがどこかおかしいんだな。

元々上下の反転部分はこういう記述になってるんだけど、、、
{
    CGContextTranslateCTM(pContext, width, height);
    CGContextScaleCTM(pContext, -1.0, -1.0);
}
うん?よく見ると上下左右とも反転させてるじゃない。サンプルコードはこれでいいのかもしれないけどOpenGL ESの時は上下反転だけさせてたなってことで上下反転だけにしてみる。
{
    CGContextTranslateCTM(pContext, 0.0, height);
    CGContextScaleCTM(pContext, 1.0, -1.0);
}

テクスチャを貼ったロボット(修正後)

↑おおお!期待通りにテクスチャ貼れた〜!

でも、なんだか暗いぞ?法線情報がおかしい?ってことで続く。



<< 法線と光源の内積でテクスチャの明るさを決める  TopPage  Bulletの64ビット対応 >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/941-b00a88d2




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad