2021年3月17日 星期三

小乖的圖學筆記 week04

1.新增GLUT專案

2新增程式碼void mouse(int button,int state,int x,int y) 讀取滑鼠點擊狀況

#include <GL/glut.h>///使用GLUT外掛

#include <stdio.h>


static void display(void)

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清背景

    glutSolidTeapot(0.5);///畫茶壺

    glutSwapBuffers();///更新畫面

}


void mouse(int button,int state,int x,int y)///(左中右鍵,上下,x座標)

{

    printf("button:%d state%d x:%d y:%d\n",button,state,x,y );///觀察印出來的值

}


int main(int argc, char *argv[])///main()函式

{

    glutInit(&argc, argv);///Init初始化GLUT

    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///Init初始化Display功能

    glutCreateWindow("07160325 小乖的茶壺");///建立自訂名稱的GLUT視窗

    glutDisplayFunc(display);///準備display()函式

    glutMouseFunc(mouse);///新增的mouse函式

    glutMainLoop();///主要函式

}

3.成果展示

4.新增程式碼void motion(int x,int y) 讀取滑鼠拖曳狀況

#include <GL/glut.h>///使用GLUT外掛

#include <stdio.h>

int n=0,vx[3000],vy[3000];

static void display(void)

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清背景


    glBegin(GL_LINE_LOOP);

    for(int i=0;i<n;i++)///用for畫出來

    {

        glVertex2f((vx[i]-150)/150.0,-(vy[i]-150)/150.0);///座標換算

    }

    glEnd();


    glutSwapBuffers();///更新畫面

}

void motion(int x,int y)

{

    vx[n]=x;///將滑鼠x值存起來

    vy[n]=y;///將滑鼠值存起來

    n++;

    display();///每次移動滑鼠都會呼叫display

}

void mouse(int button,int state,int x,int y)///(左中右鍵,上下,x座標){}

int main(int argc, char *argv[])///main()函式

{

    glutInit(&argc, argv);///Init初始化GLUT

    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///Init初始化Display功能

    glutCreateWindow("07160325 小乖的茶壺");///建立自訂名稱的GLUT視窗

    glutDisplayFunc(display);///準備display()函式

    glutMouseFunc(mouse);///新增的mouse函式

    glutMotionFunc(motion);///新增的motion函式

    glutMainLoop();///主要函式

}

5.成果展示

6.玩Transformation位移 變形 旋轉


沒有留言:

張貼留言

距地表面160 Week11

 #include "glm.h" GLMmodel* pmodel = NULL; void drawmodel(void) {     if (!pmodel) { pmodel = glmReadOBJ("data/porsche.obj...