Opengl glTranslatef不工作
在我的项目中,我想渲染雨,所以我使用粒子 我的渲染方法:Opengl glTranslatef不工作,opengl,lwjgl,Opengl,Lwjgl,在我的项目中,我想渲染雨,所以我使用粒子 我的渲染方法: public void draw(Camera camera) { glBegin(GL_POINTS); glPushMatrix(); glTranslatef(camera.getX(), camera.getEyeLevel(), camera.getY()); glColor4f(0, 0, 0.8f, 0.1f); for(int i = 0; i < _curre
public void draw(Camera camera) {
glBegin(GL_POINTS);
glPushMatrix();
glTranslatef(camera.getX(), camera.getEyeLevel(), camera.getY());
glColor4f(0, 0, 0.8f, 0.1f);
for(int i = 0; i < _currentParticlesCount; i++)
{
_particles[i].draw();
}
glPopMatrix();
glEnd();
}
glDisable(GL_DEPTH_TEST);
glPushMatrix();
glTranslatef(camera.getX(), camera.getEyeLevel(), camera.getY());
glBegin(GL_POINTS);
glColor3f(1, 1, 1);
for(int i = 0; i < STARS_COUNT; i++) {
_starsArray[i].draw();
}
glEnd();
glPopMatrix();
glEnable(GL_DEPTH_TEST);
您可以看到,我想将所有粒子平移到相机的位置-相对于播放器。
但有一个问题,glTranslatef根本不起作用。
所以我看到了世界坐标系开始处的所有粒子
事实上,当我使用相同的原理绘制恒星(粒子)时,GLTRANSTEF工作正常
星星渲染方法:
public void draw(Camera camera) {
glBegin(GL_POINTS);
glPushMatrix();
glTranslatef(camera.getX(), camera.getEyeLevel(), camera.getY());
glColor4f(0, 0, 0.8f, 0.1f);
for(int i = 0; i < _currentParticlesCount; i++)
{
_particles[i].draw();
}
glPopMatrix();
glEnd();
}
glDisable(GL_DEPTH_TEST);
glPushMatrix();
glTranslatef(camera.getX(), camera.getEyeLevel(), camera.getY());
glBegin(GL_POINTS);
glColor3f(1, 1, 1);
for(int i = 0; i < STARS_COUNT; i++) {
_starsArray[i].draw();
}
glEnd();
glPopMatrix();
glEnable(GL_DEPTH_TEST);
glDisable(GL\u深度\u测试);
glPushMatrix();
glTranslatef(camera.getX(),camera.geteylevel(),camera.getY());
glBegin(总分);
gl3f(1,1,1);
对于(int i=0;i
我做错了什么
另外,我使用OpenGL 1.1 LWJGL,Java OpenGL包装器(LWJGL.org)glTranslatef将无法工作,因为它位于/glEnd之间
您可以使用glGetError()()使查找此类错误变得更容易。谢谢,我已解决了我的问题。但事实上,在我程序的另一个地方,我使用GLTRANSAREF在glBegin/glEnd之间绘制多边形,GLTRANSTAREF可以正常工作。绘图点和绘图多边形之间有什么区别吗?在什么情况下我应该在glBegin之前使用GLTRANSTEF?GLTRANSTEF不应该在begin/end之间工作(虽然驱动程序可能允许,但在中不支持)。调用glBegin告诉opengl您将开始绘制一些东西,在glEnd之前,您通常只应设置顶点属性并调用glVertex*。这允许opengl实现更好地并行化渲染,因为它知道不会发生状态更新,例如modelview矩阵,并且会中断顶点流(这是我的猜测)。我建议尽快调查VBO。