在MonoTouch / OpenTK / GLKit中启用Texture2D会生成错误0x0500

时间:2012-08-16 15:32:50

标签: ios opengl-es xamarin.ios opengl-es-2.0 glkit

我在GLKViewController中使用MonoTouch 5.2.13中的OpenTK-1.0.dll。我可以使用彩色顶点渲染3D​​对象,一切正常。

现在我想用纹理贴图渲染3D对象。为了实现这一点,我将以下调用添加到我的ViewDidLoad方法(在我的GLKViewController的子类中):

GL.Enable(EnableCap.Texture2D);

但是因为我添加了这个调用,OpenGL屏幕保持黑色(没有更多颜色的顶点),在控制台上我看到了

GL ERROR: 0x0500

当我删除GL.Enable电话时,一切正常。

任何提示?

2 个答案:

答案 0 :(得分:2)

OpenGLES 2.0中不存在

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类负责管理着色器,因此我们只需告诉它激活纹理渲染。

相关问题