2017年3月20日 星期一

Week03 浩丁洲街的上課筆記(補)

HW1. 複習上一周畫茶壺
像之前一樣,打開GLUT專案,修改裡面的程式碼以簡潔並劃出一個茶壺。
程式碼:
#include <GL/glut.h>
static void display (void)
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();


}


int main(int argc, char *argv[])
{

    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("I am number 1!!!");
    glutDisplayFunc(display);
    glutMainLoop();

}
 
HW2. 加入MouseFunc,抓滑鼠點下去的數據並可改變茶壺顏色
在主函式中加入glutMouseFunc(mouse);
並且在上方加入mouse 函式 static void mouse (int button, int state, int x  , int y )
並且加入 #include <stdio.h> ,讓我們可以用到 printf 可以將mouse4個數據列印出來。完成後如下圖:
 
接下來希望再點不同地方的時候茶壺可以更改顏色,在printf()函式下加入這兩行程式碼:
glColor3f(1,x/300.0,y/300.0);
glutPostRedisplay(); //呼叫此函式來重新顯示(整理)螢幕
 
*note main主函示中可該便是窗的大小(預設是300X300)
只要加入 glutInitWindowSize(500, 500); 可改變為500X500的視窗大小哦。
接著是要邊移動滑鼠邊改變顏色了,在主函式中加入glutMotionFunc(motion); 並在上方加入motion函式:
static void motion (int x, int y )
{
    printf("%d %d\n", x, y);


}
    glColor3f( 1, x/300.0, y/300.0);
    glutPostRedisplay();加入motion函式中
即為:
static void motion (int x, int y )
{
    printf("%d %d\n", x, y);
    glColor3f( 1, x/300.0, y/300.0);
    glutPostRedisplay();
}


沒有留言:

張貼留言