簡體   English   中英

WPF中的OpenGL通過ActiveX?

[英]OpenGL in WPF via ActiveX?

我打算在WPF中嵌入一個非托管的C ++ OpenGL查看器。 要求是(除了穩健性和易於開發)

  • 適當調整大小
  • OpenGL查看器區域的上下文菜單(僅適用於查看器相關操作)
  • 事件(例如,通過在OpenGL查看器中選擇對象觸發)
  • WPF對話框應該在OpenGL空間之上繪制

到目前為止,我已經找到了一些關於使用托管WinForm控件的博客和討論(通過C ++ / CLI包裝器),但是要完成上述所有要求(如果可能的話)似乎有點棘手(甚至有點瑣碎)。

如何創建ActiveX控件? 盡管沒有創建ActiveX控件的經驗,但一個優點就是它在自己的進程中運行。

這是一個好主意還是會陷入更多的修修補補?

編輯:我應該更清楚OpenGL查看器。 它是一個基於C ++ 3D引擎的現有應用程序,僅支持OpenGL。 移植到支持DirectX的引擎被視為最后的手段。

雖然我沒有使用ActiveX,但我已經完成了我認為你想要實現的目標。 兩條信息幫助我走上了這條道路。

  1. 混合托管代碼和非托管代碼

    • 事實證明,托管C ++編譯與非托管C ++完全不同,數據存儲在完全不同的堆上。 幸運的是,您可以使用...將代碼段標記為托管或非托管。

    #pragma managed
    #pragma unmanaged

  2. OpenGL上下文管理

    • 我遵循了類似於本文中描述的方法
    • 如果您需要管理多個OpenGL窗口,wglMakeCurrent和wglShareLists將成為您的伙伴

祝好運!

為什么你想要一個activex? 有一些托管的基於PInvoke的包裝器,因為SharpGL可以輕松完成您需要的工作。 但是,既然你使用WPF並且你有一個Viewport3d對象,為什么不使用它呢? 如果您熟悉3d引擎,您會欣賞它的簡潔性(即使在速度方面存在一些缺點)。

另一點,因為根據這個問題,我被迫放棄了WPF 3d渲染,轉而使用OpenGl,因為Opengl可以通過使用純軟件模式在會話0中渲染。 如果您計划在服務或asp.net應用程序的屏幕外位圖中呈現某些內容,則這是一項要求。

暫無
暫無

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

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