gpt4 book ai didi

java - 我想每帧调用一次 glBegin 和 glEnd

转载 作者:行者123 更新时间:2023-12-01 08:13:49 26 4
gpt4 key购买 nike

如标题所示,我希望每帧/更新只能调用一次 glBegin 和 glEnd ,因为我听说并且正在经历,如果每次更新多次调用它,速度会大大减慢。

这是我的渲染函数的代码:

GL11.glTranslatef(0, 0, -10);
int x = 0;

while (x < World.BLOCKS_WIDTH - 1) {
int y = 0;
while (y < World.BLOCKS_HEIGHT - 1) {

if( x * World.BLOCK_SIZE <= Display.getHeight() || y * World.BLOCK_SIZE <=
Display.getWidth() || x * World.BLOCK_SIZE >= 0 ||
y * World.BLOCK_SIZE >= 0 ) {

blocks.b[data.blocks[x][y]].draw(x + Main.PosX, y + Main.PosY);

}

y++;
}
x++;

}

感谢任何帮助。

这是我的 block 类:

GL11.glPushMatrix();
GL11.glTranslatef(Xa * World.BLOCK_SIZE, Ya * World.BLOCK_SIZE, 0);
//GL11.glRotatef(0, 0, 1, 0);
//GL11.glRotatef(0, 1, 0, 0);

Texture.bind();



GL11.glBegin(GL11.GL_QUADS);
GL11.glColor3f(1f, 1f, 1f);
//GL11.glNormal3f(0, 0, 1);
GL11.glTexCoord2f(0, 0);
GL11.glVertex2f(0, 0);
GL11.glTexCoord2f(0, 1);
GL11.glVertex2f(0, S);
GL11.glTexCoord2f(1, 1);
GL11.glVertex2f(S, S);
GL11.glTexCoord2f(1, 0);
GL11.glVertex2f(S, 0);
GL11.glEnd();


GL11.glPopMatrix();

}
PS。我能理解一点纯OpenGL。

最佳答案

速度减慢不是由于 glBegin…glEnd 造成的,而是由于其间大量的 glNormal、glTexCoord、…glVertex 调用造成的。这称为立即模式,自从 OpenGL-1.1 发布以来就已经过时了,支持顶点数组。那是 15 年前的事了。

请使用顶点数组,最好与顶点缓冲区对象结合使用;这才是真正的性能改进的来源。

关于java - 我想每帧调用一次 glBegin 和 glEnd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15157985/

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