纹理绑定的特殊参数?
Posted
技术标签:
【中文标题】纹理绑定的特殊参数?【英文标题】:Special parameters for texture binding? 【发布时间】:2010-06-06 15:16:39 【问题描述】:我是否必须以某种方式设置我的 gl 上下文来绑定纹理。我正在关注一个教程。我开始做:
#define checkImageWidth 64
#define checkImageHeight 64
static GLubyte checkImage[checkImageHeight][checkImageWidth][4];
static GLuint texName;
void makeCheckImage(void)
int i, j, c;
for (i = 0; i < checkImageHeight; i++)
for (j = 0; j < checkImageWidth; j++)
c = ((((i&0x8)==0)^((j&0x8))==0))*255;
checkImage[i][j][0] = (GLubyte) c;
checkImage[i][j][1] = (GLubyte) c;
checkImage[i][j][2] = (GLubyte) c;
checkImage[i][j][3] = (GLubyte) 255;
void initt(void)
glClearColor (0.0, 0.0, 0.0, 0.0);
makeCheckImage();
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glGenTextures(1, &texName);
glBindTexture(GL_TEXTURE_2D, texName);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, checkImageWidth,
checkImageHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE,
checkImage);
engineGL.current.tex = texName;
在我的渲染中我这样做:
PolygonTesselator.Begin_Contour();
glEnable(GL_TEXTURE_2D);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
glBindTexture(GL_TEXTURE_2D, current.tex);
if(layer[currentlayer].Shapes[i].Contour[c].DrawingPoints.size() > 0)
glColor4f(
layer[currentlayer].Shapes[i].Color.r,
layer[currentlayer].Shapes[i].Color.g,
layer[currentlayer].Shapes[i].Color.b,
layer[currentlayer].Shapes[i].Color.a);
for(unsigned int j = 0; j < layer[currentlayer].Shapes[i].Contour[c].DrawingPoints.size(); ++j)
gluTessVertex(PolygonTesselator.tobj,&layer[currentlayer].Shapes[i].Contour[c].DrawingPoints[j][0],
&layer[currentlayer].Shapes[i].Contour[c].DrawingPoints[j][0]);
PolygonTesselator.End_Contour();
glDisable(GL_TEXTURE_2D);
但是它仍然渲染颜色而不是纹理。我至少希望看到黑色或其他东西,但它好像绑定失败了。我错过了什么吗?
谢谢
【问题讨论】:
我无法弄清楚为什么纹理没有被映射... 【参考方案1】:从该代码看来,您没有设置任何 UV。
编辑:使用 GL_MODULATE 代替 GL_DECAL 有什么不同吗? (我在这里猜测是因为我怀疑问题出在你没有提供的代码上,或者在 gluTessVertex 本身......
【讨论】:
是的,在 tesselator 回调中设置了 UV,但即使没有这些,我仍然应该看到 glcolor 以外的东西 我发现纹理在调整大小时被覆盖,因为我在调整大小时重新启动上下文,我需要帮助正确调整大小。***.com/questions/2985297/…以上是关于纹理绑定的特殊参数?的主要内容,如果未能解决你的问题,请参考以下文章