Home People Research Blog Courses Links Search Download
NCHC

Blog

Blog 最新文章

  1. Visual Studio 的遠端偵錯:Windows
    2021/03/24 14:45
  2. Visual Studio 2019 16.9 支援使用 OpenMP LLVM
    2021/03/03 13:52
  3. Valve 推出完全支援 OpenXR 的 SteamVR 1.16.8
    2021/02/25 09:43

Blog 最新回應

  1. 加入斜體文字...
    2021/02/07 21:06
  2. 加入斜體文字...
    2021/02/07 21:06
  3. 加入斜體文字...
    2021/02/07 21:06

Keyword 關鍵字

C++ C++17 javascript Valve Index PHP OpenNI2 NiTE2 OpenMP Pandas Python git Pandas C++11 CubeX C++14 GitLab 3D立體 CUDA 資料視覺化 xml svn OpenCL OpenVR 開放資料 HTC Vive Focus Boost Docker HTC Vive Pro 3d print Oculus Rift S C++20 ASUS Xtion C++14 Java VR HoloLens 2 資訊地圖 MR Docker OpenCV iFlyover OpenNI HTC Vive Oculus Quest 2 OpenXR Windows MR Oculus Python OpenGL Qt Kinect 開放資料 VR Vulkan WebGL

類別:技術相關 » 技術研究
文章發表|我要回應|RSS訂閱

OpenGL 3.x教學: 前言:為何要學習OpenGL

這幾年下來 OpenGL 這套3D API越來越少人用, 取而代之的則是 Microsoft 的 Direct3D API。 不過 OpenGL 還是有些好處的 ,從幾個角度來看:

  1. OpenGL 硬體支援性:
    微軟將 DX10 與 DX11 限定在Windows Vista / Windows 7 上的平台, 使用者不更換作業系統就不能用。 不過相同的硬體功能例如 DX10 的 Geometry shader,DX 11 的tessellation 使用 OpenGL API 則仍然可以在舊有的 WinXP 上使用。 此外由於 OpenGL 提供擴充的使用 , 所以在 OpenGL下也可以使用到各家顯示晶片的最新功能。
  2. 跨平台
    OpenGL 本身是一套跨平台的 API, 所以在Windows / Linux / Mac BSD 上都可以使用。 並且由於手持裝置的發達, 手機上的 OpenGL ES 1.0 / ES 2.0 是基於OpenGL 1.5 / 3.x 的刪減修改版。 此外在正在發展中的 WebGL 也是根據 OpenGL ES 2.0 制訂中。 而OpenGL ES 2.0 的概念跟 OpenGL 3.x 是大同小異的, 所以未來的理想狀況是開發的3D程式能在Web, PC, 手持裝置上使用。

然而在整合性上而言,由於應用程式通常並不只有單純的繪圖,以網路遊戲而言, 除了繪圖, 還需要音效, 網路,影片播放, 鍵盤滑鼠搖桿等輸入裝置操作,而 OpenGL 只包含繪圖。 這點是使用 OpenGL 開發應用程式上比 Direct3D 不方便的部分。因為 Direc3D 上有 DirectX,把其他的需求都整合在一起。 不過現在也有其他的 API 在提供跨平台的功能下,可以用 OpenGL API 繪圖, 同時也整合音效,網路,影片播放,鍵盤滑鼠搖桿等輸入裝置。 例如: QT , SDL。算是彌補了這方面的缺點。

註1: OpenGL ES 1.0 是 OpenGL 1.5 的刪減版。
註2:目前 OpenGL 3.x 不完全涵蓋全部的 OpenGL ES 2.0 ,但是根據 khronos 未來的制訂方向是將未來的 OpenGL 制訂成 OpenGL ES 2.0 的 SuperSet。
註3:WebGL詳情請見: http://khronos.org/webgl/wiki/Main_Page (內有WebGL範例程式)

本文部分參考至 http://blog.wolfire.com/2010/01/Why-you-should-use-OpenGL-and-not-DirectX

張貼者:柏穎於2010/03/08 15:37 下午有3則回應,瀏覽次數:4,473次
Lau 於 2010/05/05 18:15 下午 回應:
請問,我在Vista上面播放大解析度的電影,會很慢。應該我目前的codes 在Vista上目前的程式無法用到顯示卡硬體的加速功能,如果要克服,可能需要用D3D或者OpenGL去Render。但是剛
剛試了OpenGL,CPU資源還是佔很多50%
以上,請問OpenGL是否有哪個API可以確保影片的render透過顯示卡硬體去執行? 我想要用OpenGL去展現最佳的效能給別人看。否則只能用D3D了。感謝。
作者作者柏穎 於 2010/05/05 18:47 下午 回應:
依照這個用途,應該是需要使用OpenGL裡面的Pixel Buffer Object,將decode出來的Frame放到PBO裡,再做OGL 的render.至於decode的硬體加速方面,以nvidia來說有提供API可以使用,所以可以使用nvidia API作video decode加速,然後把decode的frame丟到OGL的PBO,再作顯示.而Nvidia的硬體video decode加速部分,還有另個選擇是換成用cuda, cuda allocate的記憶體可以直接轉成OGL的PBO.(前個做法不確定能否直接轉成PBO)
作者作者柏穎 於 2010/05/06 13:40 下午 回應:
另外像pbo跟OGL render在實作上也有一些細節要注意,沒用對的話,也會造成效率不彰.

-- TOP --

我要回應
* 身份  訪客 (暱稱:)
 本篇文章作者 (帳號:密碼:)
* 內容      
很高興 悲傷 震驚 疑惑 大笑 發瘋 傷心
* 留言密碼 (請輸入下方圖片中去除前、後位數的數字,共五碼。)
說明 1. * 表示必填欄位。
2. 不支援HTML Tag。
   

-- TOP --

© Visualization and Interactive Media Laboratory of NCHC, 2007 - 2021, All Rights Reserved. Contact E-mail