打开gl画线错误
open gl drawing a line error?
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <GL/glut.h>
#define ROUND(a) ((int)+.5)
void display(void) {
int xa = 10, ya = 3, xb = 56, yb = 98;
int dx = xb - xa, dy = yb - ya, steps, k;
float xincre, yincre, x = xa, y = ya;
glColor3f(0.0f, 0.0f, 1.0f);
if (abs(dx) > abs(dy))
steps = abs(dx);
else
steps = abs(dy);
xincre = dx / (float)steps;
yincre = dy / (float)steps;
glBegin(GL_POINTS);
glVertex2s(ROUND(x), ROUND(y));
for (k = 0; k < steps; k++) {
x += xincre;
y += yincre;
glVertex2s(ROUND(x), ROUND(y));
printf("%f,%f", x, y);
}
glEnd();
glFlush();
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE);
glutInitWindowSize(500, 500);
glutInitWindowPosition(100, 100);
glutCreateWindow("CpViewer");
glClearColor(1.0, 1.0, 1.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
我尝试实现dda算法用于生成一行,但它似乎只是打印一个点。我不明白问题出在哪里?在白色背景下我只能得到一个蓝点作为输出
绘图坐标是根据标准化矩形定义的(x和y都在-1和1之间),而不是根据窗口坐标定义的。因此,绘图的最左边的x坐标在窗口坐标中为0,在绘图坐标中为-1.0,最右边的x坐标在窗口坐标中为窗口宽度(在本例中为500),在绘图坐标中为1.0。y坐标是相同的,但是y轴是从窗口坐标翻转到绘图坐标(绘图坐标中的-1将是窗口坐标中的500)。
尝试用glVertex2f绘制点,并根据窗口大小重新缩放点:
glBegin(GL_POINTS);
for (k = 0; k <= steps; k++) {
glVertex2f((x - 250.f)/250.f, (250.f - y)/250.f);
printf("%f,%f", x, y);
x += xincre;
y += yincre;
}
glEnd();
您还需要跟踪窗口是否被调整大小,以确保您正确缩放这些坐标,但目前,这应该工作。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- glDrawElements GL 错误类型 = 0x824c,严重性 = 0x9146,消息 = GL_INVALID
- 致命错误 C1083:无法打开包含文件:"GL/glew.h":没有此类文件或目录
- C++ 致命错误:glad/gl.h:没有这样的文件或目录
- Android Native:CMake 链接错误:未定义对 GL 函数的引用 - 即使包含并链接了 EGL 和 GLESv3
- Glew - 与 GLFW 配对时 gl- 函数符号上出现链接错误
- gl_invalid_operation错误1218(0x0502)使用简单的OpenGl命令GlverTex2i,gl
- 错误:尝试纯粹在 NDK C++ 的本机活动中使用 Open GL 时,无法解析类型 'EGL_DEFAULT_DISPLAY'
- glbinding, Qt 和错误"glbinding is not compatible with gl.h"
- 使用gl时出现多个错误
- C++ OpenGL:在 glew.h 之前包含错误 gl.h
- 如何将 Open GL 驱动程序中的分段错误追溯到我的源代码
- 如何修复此错误:#include < gl/glut.h> "Cannot open source file gl/glut.h"
- 启用深度测试时出现 GL 错误 1280
- 打开gl画线错误
- glBindFramebuffer 在使用 GL_DRAW_FRAMEBUFFER 目标时会导致 "invalid operation" GL 错误
- 未处理的异常错误visual studio 2010 c++ (open gl)
- 错误:"GL/glfw3.h:没有这样的文件或目录",在 Linux 上使用 OpenGL 编译C++程序时