我在GLKViewController中使用MonoTouch 5.2.13中的OpenTK-1.0.dll。我可以使用彩色顶点渲染3D对象,一切正常。
现在我想用纹理贴图渲染3D对象。为了实现这一点,我将以下调用添加到我的ViewDidLoad
方法(在我的GLKViewController的子类中):
GL.Enable(EnableCap.Texture2D);
但是因为我添加了这个调用,OpenGL屏幕保持黑色(没有更多颜色的顶点),在控制台上我看到了
GL ERROR: 0x0500
当我删除GL.Enable
电话时,一切正常。
任何提示?
答案 0 :(得分:2)
glEnable(GL_TEXTURE_2D)
(或openTK等价物)。它只控制固定管道的纹理。
要在OpenGLES 2.0中使用纹理,只需在着色器中对其进行采样,就无需启用任何内容。
答案 1 :(得分:2)
解决了它,我不得不添加以下内容:
_baseEffect.Texture2d0.Enabled = true;
_baseEffect.Texture2d0.GLName = _myGlkTexture.Name;
_baseEffect.Texture2d0.EnvMode = GLKTextureEnvMode.Replace;
_baseEffect.Texture2d0.Target = GLKTextureTarget.Texture2D;
_baseEffect.PrepareToDraw();
BaseEffect
类负责管理着色器,因此我们只需告诉它激活纹理渲染。