❶ OpenGL如何實現B樣條曲線和曲面的繪制(c語言)
你說的是計算機圖形學的課程設計吧,我有C編寫的代碼,可以運行,是畫B樣條曲線和曲面的,我發到你郵箱里了,你參考一下吧。
❷ 求一個C語言Opengl代碼
// Bounce.c
// Demonstrates a simple animated rectangle program with GLUT
// OpenGL SuperBible, 2nd Edition
// Richard S. Wright Jr.
#include"stdafx.h"
#include <windows.h>
#include <gl/glut.h>
// Initial square position and size
GLfloat x1 = 100.0f;
GLfloat y1 = 150.0f;
GLsizei rsize = 50;
// Step size in x and y directions
// (number of pixels to move each time)
GLfloat xstep = 1.0f;
GLfloat ystep = 1.0f;
// Keep track of windows changing width and height
GLfloat windowWidth;
GLfloat windowHeight;
// Called to draw scene
void RenderScene(void)
{
// Clear the window with current clearing color
glClear(GL_COLOR_BUFFER_BIT);
// Set current drawing color to red
// R G B
glColor3f(1.0f, 0.0f, 0.0f);
// Draw a filled rectangle with current color
glRectf(x1, y1, x1+rsize, y1+rsize);
// Flush drawing commands
glutSwapBuffers();
}
// Called by GLUT library when idle (window not being
// resized or moved)
void TimerFunction(int value)
{
// Reverse direction when you reach left or right edge
if(x1 > windowWidth-rsize || x1 < 0)
xstep = -xstep;
// Reverse direction when you reach top or bottom edge
if(y1 > windowHeight-rsize || y1 < 0)
ystep = -ystep;
// Check bounds. This is incase the window is made
// smaller and the rectangle is outside the new
// clipping volume
if(x1 > windowWidth-rsize)
x1 = windowWidth-rsize-1;
if(y1 > windowHeight-rsize)
y1 = windowHeight-rsize-1;
// Actually move the square
x1 += xstep;
y1 += ystep;
// Redraw the scene with new coordinates
glutPostRedisplay();
glutTimerFunc(33,TimerFunction, 1);
}
// Setup the rendering state
void SetupRC(void)
{
// Set clear color to blue
glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
}
// Called by GLUT library when the window has chanaged size
void ChangeSize(GLsizei w, GLsizei h)
{
// Prevent a divide by zero
if(h == 0)
h = 1;
// Set Viewport to window dimensions
glViewport(0, 0, w, h);
// Reset coordinate system
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
// Keep the square square, this time, save calculated
// width and height for later use
if (w <= h)
{
windowHeight = 250.0f*h/w;
windowWidth = 250.0f;
}
else
{
windowWidth = 250.0f*w/h;
windowHeight = 250.0f;
}
// Set the clipping volume
glOrtho(0.0f, windowWidth, 0.0f, windowHeight, 1.0f, -1.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
// Main program entry point
void main(void)
{
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutCreateWindow("Bounce");
glutDisplayFunc(RenderScene);
glutReshapeFunc(ChangeSize);
glutTimerFunc(33, TimerFunction, 1);
SetupRC();
glutMainLoop();
}
//是正方形的,你改一下吧~
程序還是自己試著編,這樣才會進步,加油哈!
❸ C語言opengl如何畫出這樣的圖形
如果只用C里的函數是不行的 必須通過其它的圖形程序介面(例如OpenGL,DirectX等)可以辦到
❹ 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 吧,這是行業規范
最後,祝樓主學習愉快
❺ 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);這個宏中既然定義了顏色參數,就把它用上。最後效果為:
❻ 用Opengl(c語言)編程
當年我也做過這個程序,只是代碼不在了。
❼ 用openGL和C語言做一個3D旋轉魔方大致的步驟是什麼
另外,虛機團上產品團購,超級便宜
❽ opengl 用在C語言中時 程序裡面使用的哪種基本數據類型
openGL自己有自己定義的類型和c語言的基礎類型對應。
當然openGL沒有規定必須要用他自己定義的類型。所以你完全可以用c語言裡面的基本類型。
反正用來用去都是一樣。
就是你如果用C的類型可能到不同的編譯器或系統所佔的內存有所不一樣可能同樣的程序在不同的編譯器或系統中效果不一樣。
而openGL庫自己的類型則可以稍微避過這一點,達到一個「跨平台適配」的效果。
❾ OpenGL for c++ 視頻教程哪裡有啊 本人很急
到OpenGL 官方站去找吧。
http://www.opengl.org/code/
有許多程序例子,參考材料,不知道有沒有視頻。
❿ 求一套opengl教學視頻,求大神共享,剛學完c語言,想學習opengl,求視頻資料。
1、我用的是Visual Studio2005和Visual C++6.0,配置如下
安裝GLUT工具包
GLUT不是OpenGL所必須的,但它會給我們的學習帶來一定的方便,推薦安裝。
Windows環境下的GLUT下載地址:
(1)、將下載的壓縮包解開,將得到5個文件
(2)、在「我的電腦」中搜索「gl.h」,並找到其所在文件夾
如果是VC++6,則應該將glut.h復制在「D:\Program Files\MicrosoftVisualStudio\VC98 \Include\GL文件夾」)。 如果是VisualStudio2008,把glut.h復制到x:\Program Files\Microsoft\Visual Studio 9.0\VC\include\GL文件夾中,如果沒有GL這個文件夾則可以自己新建一個。(x是你安裝VS的盤符號,如果裝的是VC++的話,裡面有個gl文件,Visual Studio 2008則需要自己去新建一個)
(3)、把解壓得到的glut.lib和glut32.lib放到靜態函數庫所在文件夾(即與include並排的lib文件夾下)。
(4)、把解壓得到的glut.dll和glut32.dll放到操作系統目錄下面的system32文件夾內。(典型的位置為:C:\Windows\System32)
2、一樓回答的很形象,OpenGL是一種圖形編程庫,也就是說很多應用軟體都是基於它之上做成的,同樣3Dmax也是,不過不同的是3Dmax還使用了另一種圖形編程方法,即DirectX,微軟開發的,現在還在不斷完善中,給OpenGL的競爭壓力很大。我認為,3Dmax主要用來建造復雜游戲模型用的,畢竟用OpenGL中一條條編程語言繪制出來一個復雜的模型有可能,譬如一個人物模型,但是需要做的工作恐怕就不是個人能接受的了,所以只能說它們各有側重點
3、OpenGL programming guide(OpenGL紅寶書),OpenGL Reference Manual(OpenGL API大全,被稱為OpenGL藍寶書),
4、網路文庫里有很多資料,可以自己挑選著從易到難地逐步學習,我也收集了一些,如果你需要,留個郵箱我發給你