我目前正在为我打算开发的游戏开发游戏引擎/框架。我设计的系统尽可能通过抽象类和依赖注入来分离。理想情况下,我的目标是让每个子系统不依赖引擎的其他部分。是否可以使用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的大小,或者我需要依赖于另一个子系统/写平台相关代码?
感谢您的迅速和决定性的答案!我很担心,所以在这种情况下我可能会把它留给用户。另外我只是想说,我需要GL头文件时使用glLoadGen,这要归功于创建这样一个梦幻般的工具! – LivePastTheEnd