openglc語言
1. c語言如何用OpenGL
OpenGL就是基於C語言的,只需要下載OpenGL的SDK庫安裝即可,在編寫源碼時:
1、添加頭文件glut.h。
注意glut.h文件中已經包含gl.h,glu.h在實際編譯中可以只加入頭文件glut.h,很多相關的例子都是這樣的,但是在mingwstudio上編譯發現,在glut.h前還是需要加入glu.h, gl.h.如:
#include <gl/gl.h>
#include <gl/glu.h>
#include <gl/glut.h>
2、在工程中添加OpenGL的庫,有關命令行加入,glu32 opengl32 glut32庫就可以編譯了。
2. OpenGL的函數是什麼語言寫的
底層是用C寫的,就算再安卓平台 ,你看起來是java的,但是他其實是通過JNI介面穿透到C的層次,執行的還是C的函數.
所謂的跨平台就是,基本上任何主流平台 都會自帶GL的介面庫,這樣一來 你通過使用GL的函數就可以操作顯卡的繪圖功能.
3. OpenGL 跟java C# 或是其他的C 語言有什麼本質上的不同嗎
OpenGL不是編程語言,和微軟的DirectX是兩大主流的三維圖形渲染介面。由一系列.dll,.lib和.h文件組成。編程的時候,用到.h裡面的函數。那裡面有很多繪制函數和狀體控制函數。
它是由C編寫的,完全可以融合到C++程序中。
java,C#,C是語言,就像中文、英文和法語,Opengl就像用中文寫的孫子兵法。
4. C語言windows,OpenGL編程
查找 MSDN 可以得知,MSG 裡面的 pt 坐標是相對於窗口的左上角的;
2. 至於聲音控制和播放,可以使用 Windows 自帶的 MCI API,或者使用 DirectSound 來播放,我推薦你使用 un4seen 的 BASS,簡單實用強大,一兩個函數就可以播放音效了;
3. 你要使用 alpha blend 與桌面進行鏤空運算,就必須首先獲得桌面的窗體句柄,OpenGL 的 alppha 運算我不是很懂,不過 Direct3D 的話就簡單多了;
4. 屏幕常亮,其實就是阻止系統進入休眠狀態,每當系統要進入休眠狀態之前,都會向系統的所有窗口發送一條消息,你攔截這條消息,進行特別的處理就可以防止系統進入休眠了,至於是什麼消息,請查看 MSDN,我也好久沒用過這條消息了;
5.bmp 文件可以保存 alpha 通道,使用 32bit 色深的 bmp 文件就可以了,RGB 分別 8bit,alpha 通道 8bit,不過說到 alpha 通道,tga 或者 png 圖片更加合適,因為他們可以進行無損壓縮;
6.用GetPocAddress導出函數,只能用類型強制轉換,這個是 windows 的原則,我們只能去迎合它了 ...
7. 執行 NULL 指針的話,不同的系統會有不同的反應,XP 是直接程序崩潰,Vista 或者以上的系統,就會提示無響應
8. 如果你建立的工程是 Win32 窗口程序,那麼就不會有 DOS 窗口,如果你建立的是 Win32 控制台程序,那麼就會有 DOS 窗口;如果你使用 OpenGL 實用庫來創建 OpenGL 程序,那個 DOS 窗口是無法消除的,它可以幫助你進行錯誤排查
9. 不要用 Dev C++ 了,用 VS2010 吧,這是行業規范
最後,祝樓主學習愉快
5. 用Opengl(c語言)編程
當年我也做過這個程序,只是代碼不在了。
6. opengl程序怎麼寫
你的代碼中因為沒有進行適當放縮,導致正方體無法正常顯示。可以使用:glScalef(0.5,0.5,0.5);後觀察效果。另外,代碼之中存在兩處錯誤:第一,繞序問題,推測你使用逆時針正面繞序。這樣的話,則需要改正ABCD面為:ColoredVertex(ColorR, PointB);ColoredVertex(ColorG, PointA);ColoredVertex(ColorB, PointD);ColoredVertex(ColorB, PointC);第二:#define ColoredVertex(c,v)do{glColor3fv(c);glVertex3fv(v);}while(0);這個宏中既然定義了顏色參數,就把它用上。最後效果為:
7. C語言 和 openGL 和 direct(解決可以再追加100分)
OpenGL是OpenGraphicsLib的縮寫,是一套三維圖形處理庫,也是該領域的工業標准。計算機三維圖形是指將用數據描述的三維空間通過計算轉換成二維圖像並顯示或列印出來的技術。
OpenGL就是支持這種轉換的程序庫,它源於SGI公司為其圖形工作站開發的IRIS GL,在跨平台移植過程中發展成為OpenGL。SGI在1992年7月發布1.0版,後成為工業標准,由成立於1992年的獨立財團OpenGL Architecture Review Board (ARB)控制。SGI等ARB成員以投票方式產生標准,並製成規範文檔(Specification)公布,各軟硬體廠商據此開發自己系統上的實現。只有通過了ARB規范全部測試的實現才能稱為OpenGL。1995年12月ARB批准了1.1版本,最新版規范是1999.5通過的1.2.1。
OpenGL被設計成獨立於硬體,獨立於窗口系統的,在運行各種操作系統的各種計算機上都可用,並能在網路環境下以客戶/伺服器模式工作,是專業圖形處理、科學計算等高端應用領域的標准圖形庫。它低端應用上的主要競爭對手是MS-Direct3D,該圖形庫是以COM介面形式提供的,所以極為較復雜,穩定性差,另外微軟公司擁有該庫版權,目前只在Windows平台上可用。D3D的優勢在速度上,但現在低價顯卡都能提供很好的OpenGL硬體加速,所以做3D使用Direct3D已沒有特別的必要,在專業圖形處理特別是高端應用方面目前還沒有出現以Direct3D技術為基礎的例子,而游戲等低端應用也有轉向OpenGL的趨勢。
微軟在Windows NT對OpenGL的支持始於3.51,在Windows9x中的支持始於Win95 OEM Service Release 2。Windows下常用的OpenGL庫有兩種,MS實現的和SGI實現的,MS-OpenGL調用會自動檢測是否存在顯示卡製造商提供的ICD(Installable Client DeviceDriver)驅動程序,有則調用ICD中的常式,否則才用CPU進行計算,所以能利用顯示卡的OpenGL加速能力。對開發者來說使用方法並沒有區別,只是有ICD驅動時更快些。SGI的版本是純軟體實現不能利用硬體加速並且SGI已經在1999年宣布停止支持,但這套庫便於調試程序,仍有不少開發者使用。
SGI曾經宣布研發OpenGL++,該圖形庫最大的特點是面象對象,提供了樹形場景支持,大大減省了使用OpenGL處理復雜場景的工作量。後來(1999)SGI宣布與M$合作開發Ferihant,即Windows的下一代圖形處理體系,包括DirectX與OpenGL的低級圖形處理介面和以場景圖支持為特點的高級介面,並且就此停止對其在Windows下的OpenGL實現的支持以示決心。此舉世矚目,大家都以為Windows圖形處理快要過上幸福生活了,然而,不久,SGI宣布中止合作,並撤回派出的科學家,Ferihant基本上夭折。SGI 稱終止合作的原因是M$不肯積極合作,光想把SGI 的技術合並進DirectX,真正內幕不詳。不過以SGI在圖形處理界的老大地位來說,還是有幾分可信度的,因為M$初支持OpenGL就不積極。
雖然早在WinNT3.51 時代M$就已經實現了它的OpenGL 版本,但不肯隨其Windows95 時提供,稱該API 適合高端應用,而Win95面向一般消費者的用不到,並且在其win3.x下開發的wing 圖表庫的基礎上搞出了GameSDK,即後來的DirectX 庫,稱這套庫是專門為高性能游戲開發設計的,在當時的硬體條件下,這無疑是非常有道理的,並且很快成為Windows環境下游戲開發的標准API 。該庫實質上是提供了繞過Windows 直接訪問顯存的途徑,從而很好的解決了GDI 體系性能方面的不足,但由於是以COM介面形式提供的,所以相當復雜,而穩定性也不是很好,所以有人稱Direct3D 是為追求速度而不擇手段的公司才用的。然而也就在這個時期,三維圖形加速卡開始走向商用和家用,也就是在這時期S3公司以其性價比極高的帶三維圖形加速的顯示晶元、板卡向當時Trident 公司的霸主地位發起了挑戰。另外這時實時三維游戲開始流行,以Dos 下的第一人稱射擊游戲——暗殺希特勒(3d worlf) 大獲成功、紅極一時ID Software 的開始鑄輝煌,推出了Doom 、Quake1 ,相信這兩個名字在今天(2000.4) 的游戲圈子裡應該是無人不知無不曉吧?1996.12.ID Software 的高手John Carmack 在開發下一代三維圖形引擎時在其.plan 中寫上了以下字句:
Direct-3D IM is a horribly broken API. It inflicts great pain and suffering on the programmers using it, without returning any significant advantages. I don』t think there is ANY market segment that D3D is apropriate for, OpenGL seems to work just fine for everything from quake to softimage. There is no good technical reason for the existance of D3D.
I』m sure D3D will suck less with each forthcoming version, but this is an oportunity to just bypass dragging the entire development community through the messy evolution of an ill-birthed API.
此後以他為代表的一大批游戲開發人員開始多方呼籲MS積極支持OpenGL。M$終於在Win95的OSR2版本里集成了OpenGL,並為以前版本的Win95免費提供單獨的OpenGL實現。(或許您還不了解這些人的影響力,不知道您聽說過以生產Voodoo系統圖形加速卡而著稱於世的3dfx公司嗎?當年Quake的開發者不肯用Voodoo的glide API對voodoo做優化版本,差點沒把3dfx嚇蒙,於是趕緊搞了一個針對游戲的OpenGL子集:MiniGL,讓ID Software的人只要在製作OpenGL時只使用MiniGL API做過優化就成,這樣Quake總算可以用上voodoo的硬體加速能力了。這樣也造就了一個新名詞:MCD--MiniGL Client Driver,用於Windows的MiniGL驅動程序,而標準的OpenGL則依靠ICD驅動)。
8. OpenGL是由那種編程語言實現的
windows api不是c語言實現的?你開玩樂么
OpenGL是個專業的3D程序介面,是一個功能強大,調用方便的底層3D圖形庫
9. OpenGL可以用編程c++語言編寫嗎
openGL可以在c/c++/delphi環境下編寫,也有java的openGL的綁定即java3d;最開始面向c開發,後來發展為跨平台的api,你可以看下opengl的簡介
10. opengl 用在C語言中時 程序裡面使用的哪種基本數據類型
openGL自己有自己定義的類型和c語言的基礎類型對應。
當然openGL沒有規定必須要用他自己定義的類型。所以你完全可以用c語言裡面的基本類型。
反正用來用去都是一樣。
就是你如果用C的類型可能到不同的編譯器或系統所佔的內存有所不一樣可能同樣的程序在不同的編譯器或系統中效果不一樣。
而openGL庫自己的類型則可以稍微避過這一點,達到一個「跨平台適配」的效果。