窗口标题重叠Opengl渲染
Window title over lapping Opengl rendering
我正在尝试学习windows上的opengl编程,虽然我最初开始使用SDL,但我决定放弃它,以便学习如何使用WGL自己启动opengl上下文。
我使用nanovg作为一个快速的形状绘图库,并与SDL一切渲染得很好,然而,现在我已经删除了SDL并创建了我自己的窗口和OpenGL上下文,我发现窗口的标题栏重叠渲染区域。如果渲染区域的原点(0,0)在整个窗口的左上角,而不是在标题栏的下方,如果这有意义吗?
形状渲染得很好,但是如果我在位置0,0渲染一个矩形,高度为20,最初我看不到,但是,如果我增加窗口的高度,它最终会出现。
我该怎么做才能使渲染区域的原点位于标题栏的正下方?
我已经设置glViewport为0,0和窗口的宽度和高度在启动时,如果这有帮助的话。
编辑:这是OpenGL上下文创建代码,WindowSize。宽度和窗口大小。你看到的高度属性与WinAPI CreateWindow函数的高度和宽度相同。
const int PixelFormatAttributeList[] =
{
WGL_DRAW_TO_WINDOW_ARB, GL_TRUE,
WGL_SUPPORT_OPENGL_ARB, GL_TRUE,
WGL_DOUBLE_BUFFER_ARB, GL_TRUE,
WGL_PIXEL_TYPE_ARB, WGL_TYPE_RGBA_ARB,
WGL_COLOR_BITS_ARB, 32,
WGL_DEPTH_BITS_ARB, 32,
WGL_STENCIL_BITS_ARB, 32,
0
};
int ContextAttributes[] =
{
WGL_CONTEXT_MAJOR_VERSION_ARB, 3,
WGL_CONTEXT_MINOR_VERSION_ARB, 3,
WGL_CONTEXT_FLAGS_ARB, WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB,
0
};
wglChoosePixelFormatARB(WindowDeviceContext, PixelFormatAttributeList, NULL, 1, &PixelFormat, &FormatCount);
SetPixelFormat(WindowDeviceContext, PixelFormat, &PFD);
OpenGLContext = wglCreateContextAttribsARB(WindowDeviceContext, 0, ContextAttributes);
wglMakeCurrent(WindowDeviceContext, OpenGLContext);
glViewport(0, 0, WindowSize.Width, WindowSize.Height);
nvgCreateGL3(NVG_ANTIALIAS | NVG_STENCIL_STROKES);
谢谢,
好吧,所以事实证明这与我对窗口的无知有关,而不是与OpenGL本身有关(但这也与我对OpenGL的无知有关)。窗口中的窗口的大小包括它的标题栏,并且将视口的大小设置为窗口的大小是导致在标题栏下面呈现形状的问题的原因,解决它的方法是检索窗口的客户端矩形,并使用它来设置视口。
相关文章:
- OpenGL将纹理四边形渲染为(0,0)
- 使用专用显卡进行 OpenGL 渲染时帧速率较低
- 在 opengl 中渲染 obj 文件时出现黑窗口
- Qt OpenGL 渲染到纹理性能问题
- (C++) OpenGL 渲染瓦片映射会导致丢帧
- OpenGL只是渲染一个黑色的方块
- 无法在 OpenGL 上渲染具有不同 VAO 的不同网格
- 如果我使用malloc()而不是堆栈数组,OpenGL不会渲染对象
- 在两个不同的位置渲染 OpenGL 场景
- 渲染 OpenGL 中的曼德布洛特集
- 在类中渲染OpenGL对象
- 使用注入的DLL从外部应用程序中渲染OpenGL场景
- 在QT中渲染循环函数以在Windows中渲染opengl
- 如何在Win32(C++)静态控件中正确渲染OpenGL
- 屏幕外渲染 OpenGL 4.5 多样本 FBO
- 渲染openGL纹理:Class函数导致渲染失败
- 使用Qt5进行屏外渲染(openGL)
- 使用Qt只做一个窗口来快速渲染opengl里面
- 边界框截头体渲染-距离渲染-OpenGL
- TabWidgets 中的 QQuiickWidgets 在渲染 OpenGL 代码时崩溃