Week03 10160704
把data win32 glut32.dll下載下來,然後把win32解壓縮,再把data拉到win32資料夾再開transformatiom.exe就可以
#include <GL/glut.h>void display()
{
glTranslatef(0.5, 0, 0);//現在只寫這行還不夠,小茶壺會飄來票去
glutSolidTeapot(0.3);
glutSwapBuffers();
}
int main(int argc,char *argv[])
{///上面是特別的main()函式,有很多參數
glutInit(&argc, argv);///把GLUT開起來
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///上面
glutCreateWindow("GLUT Shapes");///要開式窗
glutDisplayFunc(display);///要顯示的對應函式
glutMainLoop();///最後用main迴圈,壓在最後面
}
#include <GL/glut.h>
void display()
{
glPushMatrix();///備份矩陣
glTranslatef(0.5,0,0);
glutSolidTeapot( 0.3 );///還原矩陣
glPopMatrix();
glutSwapBuffers();
}
#include <stdio.h>
void mouse(int button, int state, int x,int y)
{
printf("%d %d %d %d\n",button,state,x,y);///小黑視窗會顯示出,左鍵右鍵中鍵X、Y座標等資訊
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("GLUT Shapes");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}
#include <GL/glut.h>
float X=0, Y=0;
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );///清理背景不清會有殘影
glPushMatrix();///備份矩陣
glTranslatef( X, Y, 0);
glutSolidTeapot( 0.3 );
glPopMatrix();/// 還原矩陣
glutSwapBuffers();
}
#include <stdio.h>
void mouse(int button, int state, int x,int y)
{
X = (x-150)/150.0;
Y = -(y-150)/150.0;
///口角一樣檢一半除一半 y要加負號
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("GLUT Shapes");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}
///這樣點視窗哪裡茶壺就可以跑到哪裡
此為沒加glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT )的結果
現在我們利用滑鼠來幫我們繪圖
#include <GL/glut.h>
#include <stdio.h>
float X=0, Y=0;
void display()
{
glutSolidTeapot( 0.3 );
glutSwapBuffers();
}
void mouse(int button, int state, int x,int y)
{
float X = (x-250)/250.0;
float Y = -(y-250)/250.0;
if(state == GLUT_DOWN) {
printf(" glVertex2f(%.3f, %.3f);\n", X, Y);
}///只要是滑鼠下壓事件就printf不然滑鼠彈回也會printf就會印兩次
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(500,500);///視窗設500x500
glutCreateWindow("GLUT Shapes");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}
只後我們用glBegin(GL_POLYGON)把右邊小黑視窗給我們的glVertex2f座標複製下來,利用他們來繪圖
你點的實在太亂所也座標會出來也不像,但是還是有雛型XD








沒有留言:
張貼留言