the*_*own 5 opengl pixel-perfect
我试图在OpenGL中使用四边形绘制像素完美的位图...令我惊讶的是,缺少了非常重要的像素行:(绿色很好,红色不好)
方形的大小为30x30像素,红色2x2在左上角。
纹理使用GL_NEAREST。
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
Run Code Online (Sandbox Code Playgroud)
我不使用glViewport和glOrtho。相反,我将通过统一的屏幕尺寸发送给着色器:
uniform float cw;
uniform float ch;
...
gl_Position = vec4( -1.0f + 2.0f*(in_pos.x + in_offset.x)/cw,
1.0f - 2.0f*(in_pos.y + in_offset.y)/ch,
0.0f, 1.0f);
Run Code Online (Sandbox Code Playgroud)
但这似乎不是问题的根源,因为当我在着色器中添加(0.5,0.5)(相当于第3种情况)时,问题就消失了...
好的,现在我意识到第三个选项也不起作用:
检查您是否已将正确的屏幕尺寸传递到着色器中。
创建窗口时,定义其外部尺寸,但是当窗口具有标题/装饰时,放置渲染上下文的客户区域可能会更小。
因此,您应该使用 询问客户区域大小GetClientRect(),或者通过在创建窗口之前调用来找到“正确”的窗口大小AdjustWindowRect()- 这将为您提供窗口大小,该窗口大小将具有您最初想要的客户区域大小。
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |