私はウィンドウでOpenGLプログラミングを学びたいと思っています。私は最初にSDLを使い始めましたが、WGLを使って自分自身でOpenGLコンテキストを開始する方法を学ぶために、ウィンドウタイトルオーバーラッピングOpenGLレンダリング
私はSDLを削除して独自のウィンドウとOpenGLコンテキストを作成したので、SDLを使って素早くシェイプ描画ライブラリとSDLを使っています。ウィンドウのタイトルバーレンダリング領域がオーバーラップしています。レンダリング領域の原点(0,0)が、タイトルバーのすぐ下ではなく、ウィンドウ全体の左上にあるかのように、それは意味がありますか?
シェイプはうまく描画されますが、高さが0の位置に0を描画すると、最初は表示されませんが、ウィンドウの高さを上げると最終的に表示されます。
レンダリング領域の原点をタイトルバーのすぐ下にするにはどうすればよいですか?
glViewportを起動時に0、0、幅と高さに設定しました。
編集:これはOpenGLコンテキスト作成コードで、表示されるWindowSize.WidthプロパティとWindowSize.Heightプロパティは、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);
おかげで、
コードの一部を投稿する必要があります。おそらくあなたのビューポートの設定やカメラの位置と関係しているでしょう。 – markt
OpenGLコンテキスト作成コードを提供しましたが、面白いのは、glViewportのYパラメータの値として30を入れた場合、すべてのコンテンツが下に移動するのではなく上に移動するため、これらのビューポートの動作を理解できないと思います – user1435899
@ user1435899 OpenGLでは、x +は右に、y +は上に、z +は画面に向かって、ユーザに向かっていることをご存知ですか? – Xirema