我正在使用最新版本的OpenGL。但是,當我創建使用下面的函數是用C++紋理:OpenGL渲染紋理不清
GLuint Texture::Generate2dTexture(int width, int height, char* data, int length)
{
GLuint textureIndex;
glGenTextures(1, &textureIndex);
glBindTexture(GL_TEXTURE_2D, textureIndex);
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, width, height, GL_BGR_EXT, GL_UNSIGNED_BYTE, data);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
return textureIndex;
}
和渲染使用:
void Renderer::DrawRectangle(GLuint textureID, RECTD rect)
{
glBindTexture(GL_TEXTURE_2D, textureID);
glBegin(GL_QUADS);
{
glTexCoord2f(0.0f, 1.0f);
glVertex2d(rect.left, rect.top);
glTexCoord2f(0.0f, 0.0f);
glVertex2d(rect.left, rect.bottom);
glTexCoord2f(1.0f, 0.0f);
glVertex2d(rect.right, rect.bottom);
glTexCoord2f(1.0f, 1.0f);
glVertex2d(rect.right, rect.top);
}
glEnd();
}
他們出現在渲染之後不清楚。它看起來與由M $製作的圖像查看器中的外觀完全不同。
什麼原因導致發生以及如何避免風險?
最新版本,仍然使用直接渲染? –
我想你的意思是「模糊」的「不清楚」。如果是這樣的話,那是因爲OpenGL的雙線性插值。如果你不想插值發生,使用GL_NEAREST而不是GL_LINEAR。但是,除非將像素與像素對齊,否則紋理很可能看起來非常難看。 – Tibo
@ratchetfreak idk,我只是用這樣的代碼 – PENGUINLIONG