2016-08-31 7 views
0

私はウィンドウで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); 

おかげで、

+0

コードの一部を投稿する必要があります。おそらくあなたのビューポートの設定やカメラの位置と関係しているでしょう。 – markt

+0

OpenGLコンテキスト作成コードを提供しましたが、面白いのは、glViewportのYパラメータの値として30を入れた場合、すべてのコンテンツが下に移動するのではなく上に移動するため、これらのビューポートの動作を理解できないと思います – user1435899

+0

@ user1435899 OpenGLでは、x +は右に、y +は上に、z +は画面に向かって、ユーザに向かっていることをご存知ですか? – Xirema

答えて

0

オーケー、これはOpenGLのそのものよりも窓の自分の無知を行うことがより多くを持っていたが判明した(しかし、それはあまりにものOpenGLの自分の無知を行うには非常に多くを持っていた)ので。 ウィンドウ内のウィンドウのサイズにはタイトルバーが含まれており、ビューポートのサイズをウィンドウのサイズに設定することで、タイトルバーの下にレンダリングされるシェイプの問題が解決されました。代わりにビューポートを設定することができます。

関連する問題