我使用以下代码在中加载纹理:
var texture = new SharpGL.SceneGraph.Assets.Texture();
texture.Create(gl, filename);
但是当我把它们渲染到多边形上时,它们的分辨率非常低。看起来大约是100X100,但是源图像的分辨率要比这个高得多。
来添加我后来称为
gl.Enable(OpenGL.GL_TEXTURE_2D);
gl.BindTexture(OpenGL.GL_TEXTURE_2D, 0);
这就是我调用的所有纹理命令,除了为每个顶点提供一个gl。TexCoord。这一切都很好,但只是显示的图像非常像素化和模糊。
是否必须使用某些OpenGL设置才能启用更高分辨率的纹理?
1条答案
按热度按时间x33g5p2x1#
因此,答案是SharpGL.SceneGraph中创建纹理的Create方法会将纹理的高度和宽度降采样到2的下一个最低幂次,而且做得真实的糟糕。例如,一张428x612的图像会被降采样到256x512......很糟糕。
我编写了这个扩展方法,它将位图导入到纹理中并保留完整的分辨率。
我想如果我提供的图像文件已经缩放到2的幂,我就不会遇到这个问题,但这并不明显。
用途