首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OpenGL 1.1按固定分辨率和高比例尺渲染

OpenGL 1.1按固定分辨率和高比例尺渲染
EN

Stack Overflow用户
提问于 2022-06-06 01:20:08
回答 1查看 160关注 0票数 2

我试图渲染一个场景在320x240永久模仿感觉经典240 p系统,并将其升级到整个屏幕的大小。

我的问题是,虽然我可以用设定分辨率的精灵和glOrtho来掩盖这种效果,但它通常只是完全呈现在更高的分辨率上,最终可能会稍微慢一点,旋转一个精灵最终会使分辨率更高。

是否有办法在320x240上渲染视图,然后使用OpenGL 1.1对其进行升级以适应屏幕?

现在,我使用它来设置2D视图以进行渲染,其中宽度和高度是画布的宽度和高度。

代码语言:javascript
运行
复制
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中找不到任何关于如何实现这一点的信息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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绘制数据。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72512176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档