作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 OpenGL 的新手,现在正在学习创建对象。我试图加载多个对象,但只显示最后一个对象。
#include <gl/glut.h>
#include <math.h>
void Box (void){
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POLYGON);
glColor3f(1.0f,0.0f,0.0f);
glVertex3f(-0.14,-0.10,0.00);
glVertex3f(0.10,-0.10,0.00);
glVertex3f(0.10,0.30,0.00);
glVertex3f(-0.03,0.30,0.00);
glVertex3f(-0.14,0.00,0.00);
glEnd();
glFlush();
}
void Circle(float cx, float cy, float r, int segmen)
{
glBegin(GL_POLYGON);
for(int i = 0; i < segmen; i++)
{
float theta = 2.0f * 3.14f * float(i) / float(segmen);
float x = r * cosf(theta);
float y = r * sinf(theta);
glVertex3f(x + cx, y + cy,0.0);
}
glEnd();
}
void CreateCircle(void) {
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 1.0, 0.0);
Circle(0.5, 0.5, 0.2, 45);
glFlush();
}
void Draw (void) {
glPushMatrix();
Box();
glPopMatrix();
glPushMatrix();
glTranslatef(0.14,0.0,0.0);
glRotatef(90.0,0.0,0.0,1.0);
Box();
glPopMatrix();
glPushMatrix();
CreateCircle();
glPopMatrix();
glFlush();
}
int main (int argc,char* argv[]){
glutInit(&argc,argv);
glutInitWindowSize(800,800);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGBA);
glutCreateWindow("object5B");
glutDisplayFunc(Draw);
glClear(GL_COLOR_BUFFER_BIT);
glClearColor(1.0f,1.0f,1.0f,1.0);
glutMainLoop();
return 0;
}
在尝试在互联网上搜索时,我发现了一些关于 object_list 的信息,但我并没有真正理解它。希望你能帮上忙。
最佳答案
就像 genpfault 所说的那样,每次绘制对象时都会清除 COLOR_BUFFER_BIT
,这会导致较早绘制的对象从屏幕上删除(颜色)。在屏幕上绘制之前,您只需在开始时调用一次 glClear()
。
无论如何,我建议您搜索现代 OpenGL。您现在使用 OpenGL 的方式被称为“即时模式”,它不好、慢且已弃用。这是一个 good site
关于c++ - 在 OpenGl 中加载多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36748049/
我正在开发一个需要能够平均三个数字的 Facebook 应用程序。但是,它总是返回 0 作为答案。这是我的代码: $y = 100; $n = 250; $m = 300; $number = ($y
我只是无法弄清楚这一点,也找不到任何对我来说有意义的类似问题。我的问题:我从数据库中提取记录,并在我的网页上以每个面板 12 条的倍数显示它们。因此,我需要知道有多少个面板可以使用 JavaScrip
我是一名优秀的程序员,十分优秀!