我试图渲染一个场景在320x240永久模仿感觉经典240 p系统,并将其升级到整个屏幕的大小。
我的问题是,虽然我可以用设定分辨率的精灵和glOrtho来掩盖这种效果,但它通常只是完全呈现在更高的分辨率上,最终可能会稍微慢一点,旋转一个精灵最终会使分辨率更高。
是否有办法在320x240上渲染视图,然后使用OpenGL 1.1对其进行升级以适应屏幕?
现在,我使用它来设置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();
我听说过在纹理上呈现,但是在OpenGL 1.1中找不到任何关于如何实现这一点的信息。
发布于 2022-06-06 01:51:25
我听说过在纹理上呈现,但是我在OpenGL 1.1中找不到关于如何这样做的任何信息。
这是因为OpenGL 1.1是从1997年开始的--确切地说是四分之一世纪前。那里没有渲染纹理。
您得到的最接近的东西是glCopyTexImage2D
,它允许您将帧缓冲区内容复制到纹理对象中(从技术上讲,这将允许这种情况发生在GPU端,而无需往返到CPU和系统内存)。因此,您基本上以内部分辨率呈现数据--只使用一部分框架缓冲区作为视口,将其复制到纹理中,然后在整个框架缓冲区上绘制一个矩形,并使用该纹理和所需的过滤器。
但是请注意,在GL1.1中,GL_MAX_TEXTURE_SIZE
保证至少是64
,因此要将它写成在任何符合GL1.1的实现上都是有效的,您必须有代码将框架缓冲区纹理分割成64x64像素块。
另一种选择--系统内存往返--将涉及使用glReadPixels
读取数据,并在应用glPixelZoom
设置时再次通过glDrawPixels
绘制数据。
https://stackoverflow.com/questions/72512176
复制相似问题