我将这些模式用于OPENGL
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, 640, 480, 0, 1, -1);
glMatrixMode(GL_MODELVIEW);
glEnable(GL_TEXTURE_2D);
Run Code Online (Sandbox Code Playgroud)
我正在使用此代码绘制纹理
texture.bind();
glBegin(GL_QUADS);
glTexCoord2f(0, 0);
glVertex2f(x, y);// Upper Left
glTexCoord2f(1, 0);
glVertex2f(x + width, y); // Upper right
glTexCoord2f(1, 1);
glVertex2f(x + width, y + heigth); // Lower right
glTexCoord2f(0, 1);
glVertex2f(x, y + heigth); // Lower left
glEnd();
Run Code Online (Sandbox Code Playgroud)
它自己的纹理来自Minecraft,是一个16x16纹理.但当我将它缩放到160x160时,我得到的结果是:

你需要指定GL_TEXTURE_MIN_FILTER&GL_TEXTURE_MAG_FILTER.
如果要保持像素看起来像纹理,您将执行以下操作.
texture.bind(); // First you bind your texture
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
Run Code Online (Sandbox Code Playgroud)
如果你想让他们回到"blury",你会做以下事情.
texture.bind(); // First you bind your texture
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
Run Code Online (Sandbox Code Playgroud)
请记住,对于多个纹理,您需要单独调用它们,就像这样.
texture1.bind();
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
texture2.bind();
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
962 次 |
| 最近记录: |