gpt4 book ai didi

c++ - opengL画一条线

转载 作者:行者123 更新时间:2023-11-30 03:00:29 25 4
gpt4 key购买 nike

到目前为止,这是我的代码:

#include <iostream>
#include <cstdlib>
#include <GL/glut.h>
#include <cmath>

void keyboard(unsigned char key, int x, int y);
void display(void);
void timer(int);
static float x=0.0f,y=0.0f;

int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitWindowPosition(200,200);
glutInitWindowSize(640,480);
glutCreateWindow("draw a line");
glutKeyboardFunc(&keyboard);
glutDisplayFunc(&display);

glutTimerFunc(10,timer,0);

glutMainLoop();

return EXIT_SUCCESS;
}


void keyboard(unsigned char key, int x, int y)
{
switch (key)
{
case '\x1B':
exit(EXIT_SUCCESS);
break;
}
}

void timer(int value){
x+=0.001;
y+=0.0005;
glutPostRedisplay();
glutTimerFunc(10,timer,0);
}

void display()
{

glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity ();
glColor3f(0.0f, 1.0f, 0.0f);

glBegin(GL_POINTS);
glVertex2f(x,y);
glEnd();


glFlush();
}

它的作用是从点 (0,0) 到 (1,0.5) 每 10 毫秒点亮一个像素。我想要的是,当一个像素点亮时,它会保持在那个状态,所以最终你会看到一条线。我怎样才能做到这一点?

最佳答案

我不熟悉 glut 但我猜 display 是每次重绘时调用的函数。此函数以 glClear(GL_COLOR_BUFFER_BIT) 开头。此函数会在每次重绘时清除您的颜色缓冲区。

您可能会发现删除 glClear 并不能完全解决您的问题。这很可能是因为您的图形上下文可能是双缓冲的,并且为了提高效率,在每次动画运行时不会将前台缓冲区复制到后台缓冲区。

要获得所需效果,最好的办法可能是绘制一条在每次动画运行时增长的线。

关于c++ - opengL画一条线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12004415/

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