Luc*_*uca 5 opengl textures image-scaling
我正在尝试将纹理应用于以下代码的顶点数组:
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, texture);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glColor3f(1.0f, 1.0f, 1.0f);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 0, texcoords);
glVertexPointer(3, GL_FLOAT, 0, vertices);
glDrawElements(GL_QUADS, 12, GL_UNSIGNED_BYTE, faceIndices);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
glDisable(GL_TEXTURE_2D);
Run Code Online (Sandbox Code Playgroud)
这个纹理:

所以我有这个结果:

现在我想知道如何缩放地板纹理,我已经尝试用photoshop缩放纹理,但结果相同但更重.
我假设你的意思是你希望纹理更小,或更多.在这种情况下,更改纹理坐标,而不是纹理(即任何数据texcoords).
此外,您的示例纹理是蓝色,但在渲染图像中它是棕色的.加载时您可能正在交换R + B通道.
这取决于您想要如何映射纹理的纹理坐标。举个例子,它覆盖了整个多边形
glTexCoord2f(0.0f, 0.0f);
glTexCoord2f(1.0f, 0.0f);
glTexCoord2f(1.0f, 1.0f);
glTexCoord2f(0.0f, 1.0f);
Run Code Online (Sandbox Code Playgroud)
现在,如果您想重复纹理五次,请提供像`
glTexCoord2f(0.0f, 0.0f);
glTexCoord2f(5.0f, 0.0f);
glTexCoord2f(5.0f, 5.0f);
glTexCoord2f(0.0f, 5.0f);`
Run Code Online (Sandbox Code Playgroud)
像上面的示例一样,更改您想要映射纹理的值。