3
我试图使用OpenGL模拟粒子系统,但我不能得到它的工作,这是我到目前为止有:OpenGL的粒子系统
#include <GL/glut.h>
int main (int argc, char **argv){
// data allocation, various non opengl stuff
............
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
glutInitWindowPosition(100,100);
glutInitWindowSize(size, size);
glPointSize (4);
glutCreateWindow("test gl");
............
// initial state, not opengl
............
glViewport(0,0,size,size);
glutDisplayFunc(display);
glutIdleFunc(compute);
glutMainLoop();
}
void compute (void) {
// change state not opengl
glutPostRedisplay();
}
void display (void) {
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POINTS);
for(i = 0; i<nparticles; i++) {
// two types of particles
if (TYPE(particle[i]) == 1) glColor3f(1,0,0);
else glColor3f(0,0,1);
glVertex2f(X(particle[i]),Y(particle[i]));
}
glEnd();
glFlush();
glutSwapBuffers();
}
我一对夫妇后得到一个黑色窗口秒(该窗口之前只有标题栏)。我哪里出错了?
LE: x和每个粒子的y坐标是时间间隔(0,大小)
你可以发布你的整个代码?我们不知道particle []数组是什么。我可以猜测,粒子不在默认投影内。 – levis501 2011-03-10 04:25:00
这没关系,其余的代码都经过测试并且工作正常,代码是几千行代码,我看不出这会有什么帮助。聚焦于X(粒子[i])是粒子的x坐标和Y(粒子[i])y坐标的部分,这是与opengl部分唯一相关的部分。 – w00t 2011-03-10 04:28:40
你是否在任何地方打电话给glOrtho? – 2011-03-10 07:04:36