當前位置:首頁 » 編程語言 » c語言opengl畫點
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言opengl畫點

發布時間: 2022-07-01 20:50:17

⑴ 老師要求做c語言的游戲(類似貪吃蛇),我用的是vc++,graphics.h一直有問題,所以決定用opengl。

openGL繪圖不知道,你可以把問題簡單化,只要搞懂在任意像素點能畫一個點,
寫一個類似paint(int x, int y, int colour)函數,問題就都解決了。

畫矩形無非就是兩層for循環,調用畫點的函數一個點一個點,畫上去,裡面for循環畫一橫行,然後外面for循環把坐標移到下一行。

擦除一個矩形,就是在那個矩形上重畫一下背景色。

蛇移動,更簡單,擦掉蛇尾矩形,在蛇前進方向上畫一個矩形。兩個步驟,視覺上就是蛇在移動。

定義一個游戲區域大小的二維數組, 利用數組的下標保存蛇的坐標點、邊框坐標、和要吃的那個東西坐標。

每畫一個蛇頭,判斷一下所在坐標,做相應處理,就OK了。

⑵ 如何畫一個實心點,不用MFC, 只用C/C++

你可以用OpenGL,C語言實現的底層圖形渲染庫,很多圖形庫皆基於此。或者直接操作圖形輸出設備硬體。

⑶ OpenGL如何實現B樣條曲線和曲面的繪制(C語言)

你說的是計算機圖形學的課程設計吧,我有C編寫的代碼,可以運行,是畫B樣條曲線和曲面的,我發到你郵箱里了,你參考一下吧。

⑷ OpenGL是一門新語言嗎

它不是一門新的語言,但是你要想使用它需要學習裡面函數的用法。

它其實是一個庫,提供的是介面。
可以用visual studio 2005編輯,也可以用dev編輯,也就是說它不依賴於編程平台。

使用的時候設置好環境,引入這個庫,然後用它提供的函數(介面)就行~

雖然OpenGL是給C語言寫的,但如果希望使用在其它語言中可以使用綁定,同樣可以用於java等其它語言。
比如在java中就有被大家認可並注意的JOGL,它是Java對於OpenGl的綁定(Java Bindings for OpenGL)。理由是它得到Sun(Java的創建者)和SGI(OpenGL的創建者)的支持。

OpenGL官方網頁中列出了用於Java、Fortran 90、Perl、Pike、Python、Ada和Visual Basic的多個綁定。

⑸ 如何在Android上使用OpenGL ES 2.0繪制點

OpenGLES是一個讓人崩潰的東西。在Andorid手機上做3D還就得用它。把我記的一些筆記分享在這里吧:AndroidOpenGLES簡介20011-6-3Android系統使用OpenGL的標准介面來支持3D圖形功能,android3D圖形系統也分為java框架和本地代碼兩部分。本地代碼主要實現的OpenGL介面的庫,在Java框架層,javax.microedition.khronos.opengles是java標準的OpenGL包,android.opengl包提供了OpenGL系統和AndroidGUI系統之間的聯系。Android的本地代碼位於frameworks/base/opengl下,JNI代碼位於frameworks/base/core/com_google_android_gles_jni_GLImpl.cpp和frameworks/base/core/com_google_android_gles_jni_EGLImpl.cpp,java類位於opengl/java/javax/microedition/khronos下本地測試代碼位於frameworks/base/opengl/tests。包括angeles、fillrate等14個測試代碼,這些代碼都可以通過終端進行本地調用測試(模擬器中使用adbshell)。OpenGLES1.x固定管線操作,支持glVertexPointer()等函數,不支持GLSL。頭文件在ndk的GLES目錄下,庫文件是libGLESv1_CM.so。OpenGLES2.x可編程管線操作,不兼容1.x,不支持固定管線操作,例如glVertexPointer()等函數。支持GLSL(還必須用這個來編程)。頭文件在ndk的GLES2目錄下,庫文件是libGLESv2.so。OpenGLES學習2011-6-30OpenGL定義了自己的數據類型。應該堅持使用這些OpenGL的數據類型,從而保證可移植性和效率。OpenGLES目前不支持64位數據類型。OpenGLES只支持三邊形。OpenGLES只支持gl開頭的函數,glu庫都不支持。OpenGLES從OpenGL中刪除的功能:1.glBegin/glEnd2.glArrayElement3.顯示列表4.求值器5.索引色模式6.自定義裁剪平面7.glRect8.圖像處理(這個一般顯卡也沒有,FireGL/Quadro顯卡有)9.反饋緩沖10.選擇緩沖11.累積緩沖12.邊界標志13.glPolygonMode14.GL_QUADS,GL_QUAD_STRIP,GL_POLYGON15.glPushAttrib,glPopAttrib,glPushClientAttrib,glPopClientAttrib16.TEXTURE_1D、TEXTURE_3D、TEXTURE_RECT、TEXTURE_CUBE_MAP17.GL_COMBINE18.自動紋理坐標生成19.紋理邊界20.GL_CLAMP、GL_CLAMP_TO_BORDER21.消失紋理代表22.紋理LOD限定23.紋理偏好限定24.紋理自動壓縮、解壓縮25.glDrawPixels,glPixelTransfer,glPixelZoom26.glReadBuffer,glDrawBuffer,glCopyPixelsOpenGLES2.02011-10-92.0和1.1不兼容。-2.0使用的頭文件是ndk的include目錄下的GLES2目錄,有gl2.h,gl2ext.h,gl2platform.h,而1.1使用的是GLES目錄。-2.0使用的庫文件是ndk的lib目錄下的libGLESv2.so,而1.1使用的是libGLESv1_CM.so。-2.0中取消了很多1.1函數,例如glMatrixModel和glLoadIdentity等。OpenGL著色語言(GLSL――OpenGLShadingLanguage)-使用2.0,必須學此語言。因為很多1.1的函數都被取消了。san-angelesNDKOpenGLES1.1的例子程序2012-3-8SanAngeles,查維基網路,是一個虛構的未來概念城市,位於南加州。常在電影中出現,來源自LosAngeles和SanDiego.該程序的演示效果是,觀察一個宏偉的城市,地面是鏡面有建築倒影,城市中有飛船飛過。前後有5、6個觀察點,而且鏡頭在每個觀察點不停的移動。這個例子,用NDK(C++)調用OpenGLES1.1來繪制了SanAngeles這個城市。基本上全部使用了NDK,Java程序只有1個。用vc2005演示一下,目的通過跟蹤代碼了解一些細節。方法是:-將jni下所有的.h文件,以及demo.c,app-win32.c復制出來,放在一個專門的目錄下,然後改造成用OpenGL的而不是ES的。(或者乾脆刪除大段的繪制代碼,保證編譯通過)首先分析Java代碼-DemoActivity.java,這是唯一的Java文件,它主要需要下列4個jni的介面:-();//初始化-(intw,inth);-();//繪制1幀-();其次分析C++代碼app-android.c-首先,調用了importGLInit(),動態導入OpenGL的庫。-其次,調用了appInit(),在內存中建立了平台無關的3D對象集合。建立方法是用一個數組,用類似畫圓拔高的方式產生諸多三角形。-然後,在每個時鍾周期中調用appRender(),細節是:-prepareFrame(width,height);//准備OpenGLES繪制框架。其實就是清空顏色和深度緩沖,重置投影和模型矩陣。-camTrack();//算好在當前時鍾周期,鏡頭的位置、朝向及焦距等。然後調用gluLookAt來實現。-configureLightAndMaterial();//設置光源和材質-drawModels(-1);//先繪制倒影(其實就是將所有模型z軸倒過來畫)-第一個循環,是畫精緻的物體-第二個循環,是畫運動的物體-drawGroundPlane();//再繪制鏡子一般的地面。在繪制前取消光照,打開混合,然後繪制。繪制後還原狀態。-drawModels(1);//再繪制所有模型-drawFadeQuad();//最後繪制淡出框,用融合的方式畫一個遮住整個視口的2D框,融合系數和時間相關。

⑹ C語言我用OpenGL畫了個圓,如何定義圓心坐標

opengl應該有自帶的畫圓或橢圓函數,為什麼要自己描點?
你把x和y的值都加上一個數字,或者x或y乘除一個數字試試

⑺ 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庫就可以編譯了。