gpt4 book ai didi

OpenGL GL_LINES 端点未加入

转载 作者:行者123 更新时间:2023-12-04 00:36:45 25 4
gpt4 key购买 nike

alt text我在使用 GL_LINES block 时遇到问题……下面示例中的线条没有连接到末端(尽管有时它会随机决定连接一个或两个角)。相反,端点彼此相距 1 像素(留下一个未完全平方的角;如果这有意义的话)。这是一个简单的 block 来绘制一个实心的 1 像素矩形。

 glBegin(GL_LINES);

glColor3b(cr, cg, cb);

glVertex3i(pRect->left, pRect->top, 0);
glVertex3i(pRect->right, pRect->top, 0);

glVertex3i(pRect->right, pRect->top, 0);
glVertex3i(pRect->right, pRect->bottom, 0);

glVertex3i(pRect->right, pRect->bottom, 0);
glVertex3i(pRect->left, pRect->bottom, 0);

glVertex3i(pRect->left, pRect->bottom, 0);
glVertex3i(pRect->left, pRect->top, 0);

glEnd();

下面的示例似乎解决了这个问题,给了我尖锐的方角;但我无法接受,因为我不知道它为什么会这样……
 glBegin(GL_LINES);

glColor3b(cr, cg, cb);

glVertex3i(pRect->left, pRect->top, 0);
glVertex3i(pRect->right + 1, pRect->top, 0);

glVertex3i(pRect->right, pRect->top, 0);
glVertex3i(pRect->right, pRect->bottom + 1, 0);

glVertex3i(pRect->right, pRect->bottom, 0);
glVertex3i(pRect->left - 1, pRect->bottom, 0);

glVertex3i(pRect->left, pRect->bottom, 0);
glVertex3i(pRect->left, pRect->top - 1, 0);

glEnd();

任何可以提供帮助的OpenGL程序员,我将不胜感激:)

图片是屏幕截图的放大 View 。如您所见,左上角未连接。右上角是。看不到的是左下角和右下角,没有连接。

视口(viewport)设置为每个坐标 1 到 1 个像素。
glDisable(GL_DEPTH_TEST);
glDisable(GL_LIGHTING);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho(0, __nRendererWidth, __nRendererHeight, 0, -1, 100);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glEnable (GL_TEXTURE_2D);

最佳答案

结果表明像素中心位于每个 these docs 的半整数边界上.您可以通过添加来更改它

layout(pixel_center_integer​) in vec4 gl_FragCoord;
到您的片段着色器,但不建议这样做。无论如何它对我不起作用(只是将丢失的像素移动到另一个角落)。
相反,只是在我的顶点着色器中添加 0.5,在模型变换之后但在投影变换之前。 IE。
#version 460 core
layout (location = 0) in vec2 inPos;

uniform mat4 model;
uniform mat4 projection;

void main() {
vec4 modelPos = model * vec4(inPos, 0.0, 1.0);
// Pixel centers are on half-integer boundaries. Add 0.5 for pixel-perfect corners.
modelPos.x += 0.5;
modelPos.y += 0.5;
gl_Position = projection * modelPos;
}
归功于 Yakov Galka为了弄清楚这一点。

关于OpenGL GL_LINES 端点未加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4532342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com