範例 http://jsyeh.org/3dcg10
1. 下載網頁中的data, win32
移動 Translattef()
使用上週寫出茶壺的程式碼
1.在座標上畫出圖形
```
1.在座標上畫出圖形
```
#include <GL/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT |GL_DEPTH_BUFFER_BIT);
glPushMatrix();///備份矩陣
///移動會累積, 因為它會修改矩陣
glTranslatef(0.2, 0.6, 0.8);
glColor3f(1, 1, 0);
glutSolidTeapot(0.3);
glPopMatrix();///還原矩陣
/*備份與還原間要縮排*/
glutSwapBuffers();
}
int main(int argc, char** argv)
{
glutInit( &argc, argv);
glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
glutCreateWindow("week_02");
glutDisplayFunc(display);
glutMainLoop();
}
```滑鼠事件 glutMouseFunc()
新增滑鼠事件,並利用printf()印出程式碼
```
#include <GL/glut.h>
#include <stdio.h>
float X=0,Y=0,Z=0;
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSwapBuffers();
}
void mouse(int button, int state, int x, int y)
{
X= (x-150)/150.0;
Y=-(x-150)/150.0;
if(state==GLUT_DOWN) printf(" glVertex2f(%.2f,%.2f);\n", X, Y);
}
int main(int argc, char** argv)
{
glutInit( &argc, argv);
glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH );
glutCreateWindow("week_03");
glutMouseFunc(mouse);
glutDisplayFunc(display);
glutMainLoop();
}
```
沒有留言:
張貼留言