- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如标题所示,我希望每帧/更新只能调用一次 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/
我已经在 GL 程序上工作了一段时间,突然它开始出错。在尝试解决这些问题一段时间后,我编写了一个生成相同行为的简短测试程序: #include #include #define CHECK_GL_
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
如标题所示,我希望每帧/更新只能调用一次 glBegin 和 glEnd ,因为我听说并且正在经历,如果每次更新多次调用它,速度会大大减慢。 这是我的渲染函数的代码: GL11.glTranslate
我正在尝试并排绘制 2 个不同颜色的方 block ,我的问题是我无法让 glTranslatef 将我的第二个方 block 向右移动,第二个方 block 只是在第一个方 block 上绘制。 v
glBegin(GL_TRIANGLE_STRIP); for(i; i <= degree; i++) { float
我在 OpenGl 中遇到了一个非常奇怪的问题。以下代码按预期生成黄色立方体 glPushMatrix(); glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, (
将调用 glBegin 和 glEnd 的代码括在方括号中的目的是什么?它是否具有程序或功能目的,或者仅仅是为了美学和风格?下面的代码是用 C 写的。 glBegin(GL_POLYGON); glC
我正在将一个使用 glBegin()/glEnd()(上图)的旧程序移植到 glDrawArraysInstanced()(下图)。我期望一些性能改进,但我得到了相反的结果。现在这是我第一次尝试使用
对于一个客户项目,我需要一个可以在旧硬件上运行的简单 Sprite block 传送器。 OpenGL 1.1 似乎是一个简单的答案,因为我有可以重用的旧代码。无论如何,一切都很好,但令我大吃一惊的是
当我调用“GL11.glEnd”时,多边形消失。如果我留下一行“GL11.glEnd”,那么它会保留在屏幕上,但是当我将其放入时,我正在绘制的多边形就会消失。 package package01; i
我正在为 OpenGL 构建图形 API,它基于基本的调用绘制图形样式。基本上,不是将数据存储到 GPU 中,而是使用它的句柄调用它,而是提供信息来绘制每次更新时应该绘制的内容。我知道它很慢,但它很简
我不知道简单代码有什么问题。该函数适用于 python 和 ctypes。 extern "C" void add_lines(bool antialias,GLdouble coordinates[
我是一名优秀的程序员,十分优秀!