1. 我想成為游戲開發程序員,要學些什麼
1.游戲程序員很顯然要會編程,面向商業大型游戲都是建立在DX基礎上的,需熟練掌握C,及數據結構知識。關於畫面你可以面向兩種api介面一個就是前邊的DX,再者是openGL,不過目前的市場已被微軟淹沒,省時的話建議看看DX
2.游戲引擎不用你去開發,現在的國產mud都是引進的引擎,建議看看這方面的書。有一本虛幻引擎的翻譯書籍不錯。
3.游戲機的游戲開發先不要想,除非你有錢到自己去買開發機。
4.編程是一項技能,可以是你在計算機上實現任何想乾的事。例如:寫個木馬盜你女朋友的(黑客)。實現圖書管理系統(工程)。
5.程序員都想著不可能一輩念襪子都干這,要不然發型就成了葛優了。有了資歷可以搞架構,銷售,游戲開發的話可以做策劃。等等總之人必須得以一技之長闖盪,才並高拿能有人要,不可能沒經驗讓你就讓你做管理。
6.如果是那樣的話,那你將會對webgame的開發具有先絕搭天優勢。看看相關的書籍
C#編程很高效,對webgame的開發得天獨厚,多看相關的書一定很快入門。
2. OpenGL主要是做游戲,但是有3D游戲引擎用他幹嘛而且3D的程序幾乎都沒有做的,那學他有什麼用處
你沒有搞清楚 gl 和 游戲, 引擎 之間的關系.
他們之間的層次是:
游戲邏輯代碼-->游戲引擎-->3D引擎-->opengl/DX --> 顯卡
游戲公司一般僱傭很多程序員來寫游戲代碼.這種代碼現在一般都是用java,c#,lua 這類高級語言寫的. 然後他們寫的這些代碼,會被塞到 游戲引擎里. 然後游戲肯定是需要復雜的圖像來展現的對吧? 所以 游戲引擎里會有一部分代碼來和opengl 交互. 告訴opengl我要畫什麼.
最後opengl把游戲資源(3d模型,圖片 ,等)送入顯卡,進行繪制.
所以 opengl是很底層的東西.一本沒人需要學他.
3. GUI和OPENGL是什麼關系啊
用過DOS系統吧?DOS系統沒有GUI(圖形用戶界面),因此沒有圖標,滑鼠指針等圖形交互元素,要想通知操作系統打開某個程序只能手動輸入口令。而windows操作系統則不同,因為windows有GUI,因此也就有了圖形化的用戶界面,這樣只需雙擊圖標即可通知操作系統,讓操作系統運行該程序。
因此GUI得作用是讓普通用戶以圖形的方式和操作系統進行交互。(GUI是操作系統的一部分)
而OpenGL和普通用戶沒有直接關系,也不是操作系統的一部分,它是為了讓專業的圖形程序員更方便的操縱顯卡以便繪制各種圖形(如游戲中的圖形),而將一些底層的代碼封裝成函數,這樣程序員只需調用這些函數,而不必從頭編寫底層代碼,這些函數的集合統稱為OpenGL。
因此OpenGL的作用是讓程序員在編程的過程中和顯卡之間交流更方便。
總而言之,GUI是給普通大眾用的,為了讓他們更方便的使用操作系統,OpenGL是給專業的圖形程序員用的,為了讓他們更方便控制顯卡。
這兩者八竿子打不著,你怎麼會把他們聯系起來呢?
4. opengl編程指南原書第八版 怎麼樣
《華章程序員書庫:OpenGL編程指南(原書第8版)》是由Khronos小組編寫的官方指南,是OpenGL領域的權威著作,素有「OpenGL紅寶書」的美譽。第8版針對OpenGL4.3版本全方位闡釋OpenGL的各種技術細節、方法和最佳實踐,幫助程序員走上OpenGL專家之路。
《華章程序員書庫:OpenGL編程指南(原書第8版)》共12章:第1章概述OpenGL主要特性和功能;第2章討論OpenGL中最主要的特性——可編程著色器;第3章介紹使用OpenGL進行幾何體繪制的各種方法,以及一些可以讓渲染更為高效的優化手段;
第4章闡釋OpenGL對於顏色的處理過程,包括像素的處理、緩存的管理以及像素處理相關的渲染技術;
第5章介紹在一個二維計算機屏幕上表現三維場景的操作細節;第6章討論將幾何模型與圖像結合來創建真實的、高質量的三維模型的方法;第7章介紹計算機圖形的光照效果模擬方法;第8章介紹使用可編程著色器生成紋理和其他表面效果的方法細節;第9章解釋OpenGL管理和細分幾何表面的著色器功能;
第10章介紹在OpenGL渲染管線中使用著色器進行幾何體圖元修改的特別技術;第1l章介紹使用OpenGL幀緩存和緩存內存實現高級渲染技術和非圖形學應用的相關方法;第12章介紹了最新的著色器階段,將通用計算的方法融合到OpenGL的渲染管線當中。
5. 介紹常用的OpenGL的函數(定義+功能)
OpenGL 函數庫相關的API有核心庫(gl)、實用庫(glu)、輔助庫(aux)、實用工具庫(glut)、窗口庫(glx、agl、wgl)和擴展函數庫等。從圖1可以看出,gl是核心,glu是對gl的部分封裝。glx、agl、wgl 是針對不同窗口系統的函數。glut是為跨平台的OpenGL程序的工具包,比aux功能強大。擴展函數庫是硬體廠商為實現硬體更新利用OpenGL的擴展機制開發的函數。下面逐一對這些庫進行詳細介紹。
1.OpenGL核心庫核心庫包含有115個函數,函數名的前綴為gl。這部分函數用於常規的、核心的圖形處理。此函數由gl.dll來負責解釋執行。由於許多函數可以接收不同數以下幾類。據類型的參數,因此派生出來的函數原形多達300多個。核心庫中的函數主要可以分為以下幾類函數:
(1)繪制基本幾何圖元的函數。如繪制圖元的函數glBegain()、glEnd()、glNormal*()、glVertex*()。
(2)矩陣操作、幾何變換和投影變換的函數。如矩陣入棧函數glPushMatrix()、矩陣出棧函數glPopMatrix()、裝載矩陣函數glLoadMatrix()、矩陣相乘函數glMultMatrix(),當前矩陣函數 glMatrixMode()和矩陣標准化函數glLoadIdentity(),幾何變換函數glTranslate*()、glRotate*()和 glScale*(),投影變換函數glOrtho()、glFrustum()和視口變換函數glViewport()等等。
(3)顏色、光照和材質的函數。如設置顏色模式函數glColor*()、glIndex*(),設置光照效果的函數glLight*() 、glLightModel*()和設置材質效果函數glMaterial()等等。
(4)顯示列表函數、主要有創建、結束、生成、刪除和調用顯示列表的函數glNewList()、 glEndList()、glGenLists()、glCallList()和glDeleteLists()。
(5)紋理映射函數,主要有一維紋理函數glTexImage1D()、二維紋理函數glTexImage2D()、 設置紋理參數、紋理環境和紋理坐標的函數glTexParameter*()、glTexEnv*()和glTetCoord*()等。
(6)特殊效果函數。融合函數glBlendFunc()、反走樣函數glHint()和霧化效果glFog*()。
(7)光柵化、象素操作函數。如象素位置glRasterPos*()、線型寬度glLineWidth()、多邊形繪制模式glPolygonMode(),讀取象素glReadPixel()、復制象素glCopyPixel()等。
(8)選擇與反饋函數。主要有渲染模式glRenderMode()、選擇緩沖區glSelectBuffer()和反饋緩沖區glFeedbackBuffer()等。
(9)曲線與曲面的繪制函數。生成曲線或曲面的函數glMap*()、glMapGrid*(),求值器的函數glEvalCoord*() glEvalMesh*()。
(10)狀態設置與查詢函數。主要有glGet*()、glEnable()、glGetError()等。
2.OpenGL實用庫The OpenGL Utility Library (GLU)包含有43個函數,函數名的前綴為glu。OpenGL提供了強大的但是為數不多的繪圖命令,所有較復雜的繪圖都必須從點。線、面開始。Glu 為了減輕繁重的編程工作,封裝了OpenGL函數,Glu函數通過調用核心庫的函數,為開發者提供相對簡單的用法,實現一些較為復雜的操作。此函數由 glu.dll來負責解釋執行。OpenGL中的核心庫和實用庫可以在所有的OpenGL平台上運行。主要包括了以下幾種:
(1)輔助紋理貼圖函數,有gluScaleImage() 、gluBuild1Dmipmaps()、gluBuild2Dmipmaps()。
(2)坐標轉換和投影變換函數,定義投影方式函數gluPerspective()、gluOrtho2D() 、gluLookAt(),拾取投影視景體函數gluPickMatrix(),投影矩陣計算gluProject()和 gluUnProject()等等。
(3)多邊形鑲嵌工具,有gluNewTess()、 gluDeleteTess()、gluTessCallback()、gluBeginPolygon() gluTessVertex()、gluNextContour()、gluEndPolygon()等等。
(4)二次曲面繪制工具,主要有繪制球面、錐面、柱面、圓環面gluNewQuadric()、gluSphere()、gluCylinder()、gluDisk()、gluPartialDisk()、gluDeleteQuadric()等等。
(5)非均勻有理B樣條繪制工具,主要用來定義和繪制Nurbs曲線和曲面,包括gluNewNurbsRenderer()、 gluNurbsCurve()、gluBeginSurface()、gluEndSurface()、gluBeginCurve()、 gluNurbsProperty()等函數。
(6)錯誤反饋工具,獲取出錯信息的字元串gluErrorString()。
3.OpenGL輔助庫包含有31個函數,函數名前綴為aux。這部分函數提供窗口管理、輸入輸出處理以及繪制一些簡單三維物體。此函數由glaux.dll來負責解釋執行。創建aux庫是為了學習和編寫 OpenGL程序,它更像是一個用於測試創意的預備基礎接管。Aux庫在windows實現有很多錯誤,因此很容易導致頻繁的崩潰。在跨平台的編程實例和演示中,aux很大程度上已經被glut庫取代。OpenGL中的輔助庫不能在所有的OpenGL平台上運行。輔助庫函數主要包括以下幾類:
(1)窗口初始化和退出函數,auxInitDisplayMode()和auxInitPosition()。
(2)窗口處理和時間輸入函數,auxReshapeFunc()、auxKeyFunc()和auxMouseFunc()。
(3)顏色索引裝入函數,auxSetOneColor()。
(4)三維物體繪制函數。包括了兩種形式網狀體和實心體,如繪制立方體auxWireCube()和 auxSolidCube()。這里以網狀體為例,長方體auxWireBox()、環形圓紋面auxWireTorus()、圓柱 auxWireCylinder()、二十面體auxWireIcosahedron()、八面體auxWireOctahedron()、四面體 auxWireTetrahedron()、十二面體auxWireDodecahedron()、圓錐體auxWireCone()和茶壺 auxWireTeapot()。
(5)背景過程管理函數auxIdleFunc()。
(6)程序運行函數auxMainLoop()。
4.OpenGL工具庫 OpenGL Utility Toolkit包含大約30多個函數,函數名前綴為glut。glut是不依賴於窗口平台的OpenGL工具包,由Mark KLilgrad在SGI編寫(現在在Nvidia),目的是隱藏不同窗口平台API的復雜度。函數以glut開頭,它們作為aux庫功能更強的替代品,提供更為復雜的繪制功能,此函數由glut.dll來負責解釋執行。由於glut中的窗口管理函數是不依賴於運行環境的,因此OpenGL中的工具庫可以在X-Window, Windows NT, OS/2等系統下運行,特別適合於開發不需要復雜界面的OpenGL示常式序。對於有經驗的程序員來說,一般先用glut理順3D圖形代碼,然後再集成為完整的應用程序。這部分函數主要包括:
(1)窗口操作函數,窗口初始化、窗口大小、窗口位置等函數glutInit() glutInitDisplayMode() glutInitWindowSize() glutInitWindowPosition()等。
(2)回調函數。響應刷新消息、鍵盤消息、滑鼠消息、定時器函數等,GlutDisplayFunc() glutPostRedisplay() glutReshapeFunc() glutTimerFunc() glutKeyboardFunc() glutMouseFunc()。
(3)創建復雜的三維物體。這些和aux庫的函數功能相同。創建網狀體和實心體。如glutSolidSphere()、glutWireSphere()等。在此不再敘述。
(4)菜單函數。創建添加菜單的函數GlutCreateMenu()、glutSetMenu()、glutAddMenuEntry()、glutAddSubMenu() 和glutAttachMenu()。
(5)程序運行函數,glutMainLoop()。