簡體   English   中英

用GDI繪制opengl / D3D?

[英]draw over opengl/D3D with GDI?

我想知道是否可以使用GDI繪制opengl / direct3D表面? 如果是這樣,怎么辦?

我問的原因是因為我正在編寫一個簡單的應用程序來繪制游戲中的一些內容。 這些東西全都是2D或文本,例如幀速率信息,自定義十字線,時鍾等。

我知道最好的方法是掛接並使用本機使用的渲染器/游戲,無論是opengl還是direct3d,但我正在使用GDI,因為AFAIK opengl和D3D都位於我希望可以使用的設備上下文中吸引到GDI。

通常,您通常無法直接這樣做。 從理論上講,您可以將GDI與OpenGL或DirectX混合使用,並且僅在OpenGL / DirectX設置為使用單緩沖而不是雙緩沖的情況下。 但是,這僅是理論上的可能性,因為幾乎所有DirectX和OpenGL的使用都具有雙重緩沖。

我會嘗試其他方法,例如在無邊界的分層窗口中繪制數據。

您可以在帶有CreateCompatibleDC,CreateCompatibleBitmap,SelectObject和GetDIBits的中央內存緩沖區中使用GDI進行繪制。 當心:兼容的DC速度很慢(沒有2D加速)。 然后,您必須從中央內存復制(慢速操作)到紋理。

對於文本,您可以一次將所有ASCII字符復制到一個紋理中,然后使用D3D紋理函數復制每個字符。 對於US-ASCII等寬字體,它應該足夠容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM