我正在使用OpenGL在游戏中绘制纹理。
glClear(GL_COLOR_BUFFER_BIT);
float w = 128;
float h = 128;
w *= scale;
h *= scale;
GLfloat vertices[] = {
w, 0,
w, h,
0, 0,
0, h
};
float u1 = 0;
float u2 = 1;
float v1 = 0;
float v2 = 1;
GLfloat texCoords[] = {
u2, v1,
u2, v2,
u1, v1,
u1, v2
};
glVertexPointer(2, GL_FLOAT, 0, vertices);
glEnableClientState(GL_VERTEX_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 0, texCoords);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
这是一个解释我的问题的简单例子。我改变了比例变量,它只影响三角形顶点,不应该改变纹理坐标。当比例为1时,我有这张照片:
one http://dl.dropbox.com/u/21467/opengl/1.png
当我将比例改为0.99时,我有这张照片:
two http://dl.dropbox.com/u/21467/opengl/3.png
如果你仔细观察,你会发现纹理顶部有一点条纹。它为什么存在,我该如何避免呢?
在我的真实游戏中,我绘制了瓷砖,如果我改变比例,我的瓷砖开始有这些条纹,结果我在游戏中得到了这个讨厌的条纹网格。有谁知道,出了什么问题?
答案 0 :(得分:2)
创建纹理缓冲区时调用以下代码:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
如果你仔细观察,你会发现纹理顶部有一点条纹。它为什么存在,我该如何避免呢?
发生的事情是,在某些像素处,该屏幕位置的纹理坐标可能类似于-0.0001
或1.0002
。 TEXTURE_WRAP_ [S / T]纹理参数详细说明了发生这种情况时会发生什么。
答案 1 :(得分:1)
今天第二次......
看到这个答案:
https://stackoverflow.com/a/8643282/524368
哦,小伙子,你们这些人从来没有谷歌问题吗?这已成为一些 常见问题解答:
我在这里回答了
https://stackoverflow.com/a/5879551/524368
在这里
https://stackoverflow.com/a/7272871/524368
以及其他一些地方。