Hel*_*234 2 java opengl lwjgl opengl-1.x
我正在尝试永久渲染 320x240 的场景,以模拟经典 240p 系统的感觉,并将其升级到屏幕的完整尺寸。
我遇到的问题是,虽然我可以使用设定分辨率的精灵和 glOrtho 来捏造这种效果,但它通常只是以更高分辨率完全渲染,最终可能会慢一些,并且旋转精灵最终会导致很明显,分辨率要高很多。
有没有某种方法可以使用 OpenGL 1.1 以 320x240 渲染视口,然后将其放大以适合屏幕?
现在我正在使用它来设置用于渲染的 2D 视口,其中宽度和高度是画布的宽度和高度。
GL11.glViewport(0, 0, width, height);
GL11.glDepthFunc(GL11.GL_LEQUAL);
GL11.glClear(GL11.GL_ACCUM);
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0.0D, 320, 240, 0.0D, 0.0D, 100.0D); //320 and 240 is the "true size"
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glLoadIdentity();
Run Code Online (Sandbox Code Playgroud)
我听说过渲染到纹理上,但是我找不到任何有关如何在 OpenGL 1.1 中执行此操作的信息。
我听说过渲染到纹理上,但是我找不到任何有关如何在 OpenGL 1.1 中执行此操作的信息。
这是因为 OpenGL 1.1 是从 1997 年开始的——实际上是四分之一个世纪前。那里没有渲染到纹理。
您得到的最接近的是glCopyTexImage2D,它允许您将帧缓冲区内容复制到纹理对象中(从技术上讲,这允许在 GPU 端发生这种情况,而无需往返 CPU 和系统内存)。因此,您基本上以内部分辨率渲染数据 - 仅使用帧缓冲区的一部分作为视口,将其复制到纹理中,然后使用该纹理和所需的过滤器在整个帧缓冲区上绘制一个矩形。
但请注意,GL_MAX_TEXTURE_SIZE至少64在 GL 1.1 中是可以保证的,因此要以一种可以在任何符合 GL 1.1 实现的方式编写此代码,您必须使用代码将帧缓冲区纹理拆分为 64x64 像素图块。
另一种选择 - 往返系统内存 - 将涉及使用 读回数据,并在应用设置时glReadPixels再次绘制数据。glDrawPixelsglPixelZoom
| 归档时间: |
|
| 查看次数: |
397 次 |
| 最近记录: |