2015-12-06 42 views
2

我目前正在为我打算开发的游戏开发游戏引擎/框架。我设计的系统尽可能通过抽象类和依赖注入来分离。理想情况下,我的目标是让每个子系统不依赖引擎的其他部分。是否可以使用OpenGL来确定默认帧缓冲区的大小?

在我的渲染系统中,我想提供将视口和剪刀/裁剪区域重置为当前绑定目标渲染大小的能力(无论是OpenGL FrameBuffer,Direct3D RenderTarget还是默认backbuffer)而不必让程序员跟踪它,而不必依靠窗口子系统/另一个库或者必须编写与系统相关的代码。

目前我编码渲染子系统的OpenGL实现,我想检查是否有可能得到使用OpenGL后备缓冲/默认帧缓冲区的大小3.3函数调用单独的。我以前使用GLX/WGL编写代码来做到这一点,尽管我想避免这种情况。

我碰到这个问题以前问: How to get/set the width and height of the default framebuffer?

然而,没有确凿的答案给出。关于获取视口/剪刀区域的宽度/高度的答案只有在窗口永不改变的情况下才起作用,在我的应用程序中它可能非常好,而其他答案将不起作用,因为“默认”帧缓冲区不是实际的framebuffer对象,因此不能被查询(因为这样(如果评论者是正确的)

那么,有没有任何方法来确定使用OpenGL 3.3在飞行中的默认帧缓冲区/ backbuffer的大小,或者我需要依赖于另一个子系统/写平台相关代码?

回答

3

需要结论性答案?结论性回答:第

OpenGL 4.5及其下的所有版本都没有提供查询默认帧缓冲区范围的方法。它也没有提供控制其大小的手段。

默认的framebuffer属于窗口; OpenGL的默认framebuffer对象只是一种绘制它的方法。

+1

感谢您的迅速和决定性的答案!我很担心,所以在这种情况下我可能会把它留给用户。另外我只是想说,我需要GL头文件时使用glLoadGen,这要归功于创建这样一个梦幻般的工具! – LivePastTheEnd

相关问题