gpt4 book ai didi

c++ - OpenGL 不绘制任何东西

转载 作者:行者123 更新时间:2023-11-28 05:32:02 24 4
gpt4 key购买 nike

只是尝试使用 openGL 3.0 版的 glut 在两点之间画一条线。这是代码。

#include <GL/glut.h>
#include <stdio.h>
#include <math.h>
#include <iostream>

using namespace std;

void init(void) {

glClearColor(1.0,1.0,1.0,0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0,30.0,0.0,30.0);

}

void setPixel(GLint x, GLint y) {

glClearColor(1.0,1.0,1.0,0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0,30.0,0.0,30.0);

}

float roundValue(float v) {

return floor(v + 0.5);
}

void lineDDA(int xa, int ya, int xb, int yb) {

double dx = xb-xa, dy = yb-ya, steps;
float xInc, yInc, x = xa, y = ya;
if (abs(dx) > abs(dy))
steps = abs(dx);
else
steps = abs(dy);
xInc = dx/(float)steps;
yInc = dy/(float)steps;
setPixel(x, y);
int k;
for (k = 0; k < steps; ++k) {
/* code */
x += xInc;
y += yInc;
setPixel(roundValue(x), roundValue(y));
}
}

void update() {
glClear(GL_COLOR_BUFFER_BIT);
glPointSize(5.0f);
glColor3f(1, 0, 0);
lineDDA(1, 1, 8, 7);
lineDDA(1, 1, 8, 2);
glFlush();
}

int main(int argc,char **argv){

glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowPosition(200,100);
glutInitWindowSize(640,480);
glutCreateWindow("Tutorial-1: Q4");
glLoadIdentity();
init();
glutDisplayFunc(update);
glutMainLoop();
return 0;
}

但这并没有在窗口上绘制任何东西。它只是保持白色。任何人都可以提出解决方案吗?

最佳答案

您的setPixel 函数不使用其参数xy。您没有启用线渲染模式或添加要绘制的顶点。

修复至少包括以下步骤:

  • glPointSize(5.0f);

  • 之后调用 glBegin(GL_LINES);
  • glFlush();

    之前调用glEnd()

修改 setPixel 如下所示:

void setPixel(GLint x, GLint y)
{
glVertex2f(x, y);
}

关于c++ - OpenGL 不绘制任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39263043/

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