2

我在 GLKViewController 的 MonoTouch 5.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)在 OpenGLES 2.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 回答