opengl編程
『壹』 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編程問題
//旋轉直線
#include <gl/glut.h>
GLfloat spin = 0.0;
GLdouble pt[3][3]={0};
int st=0;
void init()
{
glClearColor(0.0, 0.0, 0.0, 0.0);
glShadeModel(GL_FLAT);
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glColor3f(1.0, 1.0, 1.0);
glPointSize(5);
switch(st){
case 3:
glTranslated(pt[2][0],pt[2][1],pt[2][2]);
glRotatef(spin,0,0,1);
glTranslated(-pt[2][0],-pt[2][1],-pt[2][2]);
//點3
glBegin(GL_POINTS);
glVertex3dv(pt[2]);
glEnd();
case 2:
//線
glBegin(GL_LINES);
glVertex3dv(pt[0]);
glVertex3dv(pt[1]);
glEnd();
//點2
glBegin(GL_POINTS);
glVertex3dv(pt[1]);
glEnd();
case 1:
//點1
glBegin(GL_POINTS);
glVertex3dv(pt[0]);
glEnd();
break;
}
glPopMatrix();
glutSwapBuffers();
}
void spinDisplay(void)
{
spin = spin + 1.0;
if (spin > 360.0)
spin -= 360.0;
glutPostRedisplay();
}
void reshape(int w, int h)
{
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-50.0, 50.0, -50.0, 50.0, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void toWorldCoords(int x, int y, GLdouble w[3])
{
GLint viewport[4];
GLdouble mv[16],proj[16];
GLint realy;
glGetIntegerv(GL_VIEWPORT, viewport);
glGetDoublev(GL_MODELVIEW_MATRIX, mv);
glGetDoublev(GL_PROJECTION_MATRIX, proj);
realy = viewport[3] - (GLint) y - 1;
gluUnProject(x,realy,0,mv,proj,viewport, w,w+1,w+2);
}
void mouse(int button, int state, int x, int y)
{
switch (button) {
case GLUT_LEFT_BUTTON:
if (state == GLUT_DOWN)
{
switch(st)
{
case 2:
glutIdleFunc(spinDisplay);
case 1:
case 0:
toWorldCoords(x,y,pt[st++]);
glutPostRedisplay();
break;
}
}
break;
}
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(500, 500);
glutInitWindowPosition(100, 100);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMouseFunc(mouse);
glutMainLoop();
return 0;
}
『叄』 OpenGL編程問題
#include<iostream>下面加一行using namespace std;
前綴 數據類型 相應C語言類型 OpenGL類型
b 8-bit integer signed char GLbyte
s 16-bit integer short GLshort
i 32-bit integer long GLint,GLsizei
f 32-bit floating-point float GLfloat,GLclampf
d 64-bit floating-point double GLdouble,GLclampd
ub 8-bit unsigned integer unsigned char GLubyte,GLboolean
us 16-bit unsigned integer unsigned short GLushort
ui 32-bit unsigned integer unsigned long GLuint,GLenum,GLbitfield
『肆』 opengl編程指南適合初學者嗎
其實我覺得NeHe的OpenGL指南應該是比較容易理解和入門的~
如果常式運行有問題,最好找一下問題根源所在~
我記得我當初學openGL的時候(做虛擬現實相關的破爛玩意兒~),只有一點點的WINDOWS編程基礎(自學的《windows程序設計》這本書),用的也是nehe的教程,感覺用來入門還算不錯的~
不過後來的工作,再也沒有用過openGL。。。都淡忘了 =。=
『伍』 OpenGL編程
1.將開發庫中的.h文件拷貝到Visual C++2008的\Include\GL目錄中
2.將.lib文件拷貝到Visual C++2008的\lib目錄中
3.將.dll文件拷貝到操作系統的system32目錄中
先看一下裡面有沒有對應的 glaux.h glaux.lib 沒有的話網上下一個,或者給我郵箱我發給你也行
『陸』 如何在windows上用C/C++進行OpenGL編程
windows可以opengl編程。上網站下載glut壓縮包後,解壓,把glut32.dll放在Windows的system32目錄下,將glut32.lib放在C:\program files\Microsoft Visual Studio\VC98\Lib目錄中,將glut.h放在C:\programfiles\Microsoft Visual Studio\VC98\Include\GL目錄中。
VC工程項目的設置
為了使用OpenGL,我們需要在項目中加入相關的Lib文件:glut32.lib。方法如下:選中菜單
Project->Settings項,在link選項卡中的Object/Library moles欄中加入glut32.lib。
選擇菜單File中的New選項,彈出一個分頁的對話框,選中頁Files中的C++ sourcefile,填入
文件名,鉤選添加到剛才建的那個工程里,然後就可以開始編程了。
新建一個項目的方法如下:選擇菜單File中的New選項,彈出一個分頁的對話框,選中頁
Projects中的Win32 Console Application項,然後填入你自己的Project name,回車即可。VC為
你創建一個工作區(WorkSpace),你的項目就放在這個工作區里。 然後,為項目添加文件即可。
『柒』 opengl編程高手請進!
OpenGL1.5用戶指南英文版
下載地址
http://www.caenet.cn/data/Data.aspx?ID=344
『捌』 求<<opengl編程指南>>中文的pdf
很清晰,中文版本。可以先看看再採納。 望採納 本來是直接給你附件的。現在網路好像不能添加附件了。給我網址吧
『玖』 為什麼《OpenGL編程指南》(原書第8版)中第一個OpenGL程序triangles.cpp我原封不動的敲上去還報錯
你看的這種書,附帶了很多自己的源代碼庫.你的程序要鏈接上這種庫才能用啊.
看來你還沒怎麼用過vc, 這種鏈接lib 什麼的是基本功.
要先熟悉後才能再研究更深的東西.
你身邊有高手的話讓他給你演示一下.
『拾』 OpenGL編程使矩形旋轉
已知對角線的兩點的坐標,那麼就知道四個點的坐標了呀,(25,25) (25,75) (75,75) (75,25),你可以這么寫代碼
glPushMatrix();
glRotatef……//旋轉矩陣
glScalef……//縮放矩陣
glBegin……
glVertex2f();
glVertex2f();
glVertex2f();
glVertex2f();
glEnd();
1、glScale —— 將新的縮放矩陣乘以當前矩陣
有三個參數,為縮放因子
2、glRotate------旋轉矩陣
有四個參數,第一個是角度,其他的分別代表x,y,z軸,表示繞著哪個軸進行旋轉