opengl編程實例
1. opengl 編程
程序沒問題,我剛運行了一下,繪制的是一條紅色直線。
建議還是把OpenGL的文件重新配置一下吧,可能庫文件還不全。
如下試試:
鏈接http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip
下載需要的GLUT頭文件,DLL和Lib文件,把glut.h放到"Include/GL"下,把glut.lib和glut32.lib放到"VC98/Lib" 下,glut32.dll和glut.dll放到system32下
2. 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;
}
3. 給個cpp OpenGL編程的例子
分別將5個文件復制到windows和VC對應目錄下:
這里,是XP系統,所以需要做的就是
將glut.h放到(C:Program FilesMicrosoft SDKs
4. opengl編程高手請進!
OpenGL1.5用戶指南英文版
下載地址
http://www.caenet.cn/data/Data.aspx?ID=344
5. 求vc6.0下的openGL編程實例
3D魔方游戲,OpenGL編寫,源程序
http://61.137.90.75/downloads104/sourcecode/game/655207603Dm.zip
6. OpenGL程序
borland builder c++ 安裝路徑下有個example目錄,里頭有數個OPENGL實例,代碼齊全。
7. opengl 編程問題
1.可能在win32下沒法實現,它glut做的窗體沒發持續刷新屏幕,你可以用sdk或mfc做,這樣就可以了
2.同樣,也要在sdk或mfc中做
3.記錄初始時所有坐標位置就行了
4.和窗體的長和寬做比較,超出范圍時候,讓其等於窗體長或寬
除了2之外,你可以網上找nehe的電子教程,你想要的都有了,第二個分屏的我能在mfc下做,唯一說的是要把OpenGL的視口做成一個類,在不同屏幕中聲明其對象,這樣才能達到你想的那種實現。
你很急迫的解決這個問題,一個問題盡然提了兩次,你要真的很想實現你要的功能,只能到sdk或者mfc中去做,如果你只在win32下glut做的窗體實現,真的不能,或者很難。我在mfc下做OpenGL,可以肯定能完成你這4個功能
8. 用OpenGL編的小程序
你需要買本來學習,例如經典的opengl紅寶書《opengl編程指南》,上面有很多簡短的例子
9. OpenGL編程
1.將開發庫中的.h文件拷貝到Visual C++2008的\Include\GL目錄中
2.將.lib文件拷貝到Visual C++2008的\lib目錄中
3.將.dll文件拷貝到操作系統的system32目錄中
先看一下裡面有沒有對應的 glaux.h glaux.lib 沒有的話網上下一個,或者給我郵箱我發給你也行