0

我最近在 OpenGL 应用程序中实现了 Awesomium。当我将 Awesomium 加载到纹理中时,无论我是否将纹理绘制到表面上,OpenGL 都会将其包含在其着色过程中。

我正在尝试追踪将纹理处理到着色器中的代码行,是否有 OpenGL 用于访问所有纹理的特定函数或告诉 OpenGL 忽略纹理的方法?

更新纹理块

glBindTexture(GL_TEXTURE_2D, SkypeHUD);
glTexImage2D(GL_TEXTURE_2D, 0, 4, AwesomiumW, AwesomiumH, 0, GL_BGRA, GL_UNSIGNED_BYTE, surface->buffer());

创建纹理块

glBindTexture(GL_TEXTURE_2D, SkypeHUD);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
glBindTexture(GL_TEXTURE_2D, 0);

在没有加载纹理的情况下绘制场景:http ://puu.sh/2bVTV 在加载纹理后绘制场景:http: //puu.sh/2bVUb

你可以看到它融合了谷歌纹理。

4

1 回答 1

0

纹理启用/禁用应该由着色器代码控制,而不是某些客户端绑定状态。无论如何,您很可能会使用多个纹理单元(glActiveTexture);纹理绑定对每个单元都是单独的,所以如果你想走这条路,你必须做一些腿工作并从每个单元解开纹理。

于 2013-03-04T13:26:18.433 回答