week03
step01-1
下載課本範例
https://jsyeh.org/3dcg10/ 下載 win32.zip,data.zip 並解壓縮
解壓縮後把data資料夾放入window資料夾
執行 transformation.exe
step01-2
CodeBlocks,GLUT專案,事先把freeglut裝好,改出libglut32.a
刪除177行程式貼上上週10行程式
增加程式碼#include <GL/glut.h>
void display()
{
glutSolidTeapot( 0.3 );
glutSwapBuffers();
}
可以利用gist.github使程式碼的顏色更漂亮,開啟blogger改成HTML檢視模式,貼上從gist.github複製的網址
step02-1
增加程式碼
#include <GL/glut.h>
void display()
{
glPushMatrix();///備分矩陣
glTranslatef( 0.5, 0.5, 0);
glutSolidTeapot( 0.3 );
glPopMatrix();///還原矩陣
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week03");
glutDisplayFunc(display);
glutMainLoop();
}
step03-1
開心的專案,複製上一個專案的程式碼
增加程式碼
變成茶壺能隨著滑鼠點擊移動
#include <GL/glut.h>
float X=0,Y=0,Z=0;
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glPushMatrix();///備分矩陣
glTranslatef( X, Y, Z);
glutSolidTeapot( 0.3 );
glPopMatrix();///還原矩陣
glutSwapBuffers();
}
void mouse(int button, int state, int x, int y)
{
X= (x-150)/150.0;
Y= -(y-150)/150.0;
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week03");
glutMouseFunc(mouse);
glutDisplayFunc(display);
glutMainLoop();
}
step03-2
作業用滑鼠標出座標點畫圖
程式碼
#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=-(y-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("week03");
glutMouseFunc(mouse);
glutDisplayFunc(display);
glutMainLoop();
}
座標點前後要加
glBegin(GL_POLYGON);
glEnd();









沒有留言:
張貼留言