我最近在一个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
你可以看到它将谷歌纹理混合在其他纹理上。
答案 0 :(得分:0)
纹理启用/禁用应由着色器代码控制,而不是某些客户端绑定状态。无论如何,你最有可能使用几个纹理单元(glActiveTexture);纹理绑定是每个单元的个体,所以如果你想走这条路,你必须做一些腿部工作并解开每个单元的纹理。