2

GLKViewControllerのMonoTouch5.2.13でOpenTK-1.0.dllを使用しています。色付きの頂点を使用して3Dオブジェクトをレンダリングできますが、そこにあるものはすべて正常に機能します。

次に、テクスチャマップを使用して3Dオブジェクトをレンダリングしたいと思います。ViewDidLoadこれを実現するために、 (GLKViewControllerのサブクラスの)メソッドに次の呼び出しを追加しました。

GL.Enable(EnableCap.Texture2D);

しかし、この呼び出しを追加したので、OpenGL画面は黒のままになり(色付きの頂点はなくなります)、コンソールに表示されます

GL ERROR: 0x0500

電話を切るGL.Enableと、すべてが再び機能しています。

ヒントはありますか?

4

2 に答える 2

2

glEnable(GL_TEXTURE_2D)(またはopenTKに相当するもの)はOpenGLES2.0には存在しません。固定パイプラインのテクスチャリングのみを制御します。

OpenGLES 2.0でテクスチャを使用するには、シェーダーでテクスチャをサンプリングするだけで、何も有効にする必要はありません。

于 2012-08-16T15:55:26.883 に答える
2

それを解決しました、私は以下を追加しなければなりませんでした:

_baseEffect.Texture2d0.Enabled = true;
_baseEffect.Texture2d0.GLName = _myGlkTexture.Name;
_baseEffect.Texture2d0.EnvMode = GLKTextureEnvMode.Replace;
_baseEffect.Texture2d0.Target = GLKTextureTarget.Texture2D;
_baseEffect.PrepareToDraw();

クラスはシェーダーのBaseEffect管理を担当するため、テクスチャレンダリングをアクティブ化するように指示する必要があります。

于 2012-08-17T09:27:14.303 に答える