2021年5月26日 星期三

早上吃起司醬油蛋吐司配綠茶好爽

 上個禮拜還不習慣沒有很跟得上,但我相信這禮拜我可以的拉

首先打開02的程式碼檔複習上禮拜丟打光、貼圖、讀模型的跟等等要丟的程式碼













阿下面的程式碼有些是老朋友了,自己要記得蝦

 

#include <GL/glut.h>

void display()

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    //glutSolidSphere(0.3,30,30);這個是實心的

    glutWireSphere(0.3,30,30);///線框

    glutSwapBuffers();

}

void timer(int t){///timer響起就做

    glClearColor(1,0,0,0);///背景 現在是紅色

    display();///重劃畫面

}

int main(int argc,char**argv)

{

    glutInit(&argc,argv);

    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("week14 timer");


    glutDisplayFunc(display);

    glutTimerFunc(3000,timer,0);

    glutMainLoop();

}



  glutSolidSphere(0.3,30,30);這行的數字是啥

0.3半徑30縱切30橫切

 glutTimerFunc(3000,timer,0);     等待的時間


void timer(int t){///timer響起就做

    glClearColor(1,0,0,0);///背景 現在是紅色

    display();///重劃畫面

}  時間到做以上的事













下面是進階版 時間到就轉起來

程式碼: 

#include <GL/glut.h>

float angle=0;

void display()

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();

        glRotatef(angle, 0, 0, 1);

        glutSolidCube(0.3);///方塊

    glPopMatrix();

    glutSwapBuffers();

}

void timer(int t){ ///響起就做

    glutTimerFunc(30, timer, t+1);

    glClearColor(1,0,0,0);///顏色

    angle++;///旋轉我!

    display();///這行加了才會跑

}

int main(int argc,char**argv)

{

    glutInit(&argc,argv);

    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("week14 timer");


    glutDisplayFunc(display);

    glutTimerFunc( 3000, timer, 0 );///等待的時間

    glutMainLoop();

}












下面這行呢只有一點點不一樣 用圖表現不出來所以用講的

#include <GL/glut.h>

float angle=0;

void display()

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();

        glRotatef(angle, 0, 0, 1);

        glutSolidCube(0.3);///方塊

    glPopMatrix();

    glutSwapBuffers();

}

int diff=2;

void timer(int t){ ///響起就做

    glutTimerFunc(30, timer, t+1);

    glClearColor(1,0,0,0);///顏色

    if(angle>90) diff=-2;                            這段就是一直往左加角度

    if(angle<0) diff=+2;    如果到90度了就扣角度轉回    然後一直重複   

    angle += diff;

    display();///這行加了才會跑

}

int main(int argc,char**argv)

{

    glutInit(&argc,argv);

    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("week14 timer");


    glutDisplayFunc(display);

    glutTimerFunc( 3000, timer, 0 );///等待的時間

    glutMainLoop();

}

下面這個只是變成白方塊固定,左邊加綠長

方形讓他轉動 新增的程式碼不多我就不全

貼了

#include <GL/glut.h>

float angle=0;

void drawArml(){

    glPushMatrix();

        glScalef(1,0.5,0.5);///細長的手臂

        glColor3f(0,1,0);glutSolidCube(0.2);///綠色手臂

    glPopMatrix();

}

void display()

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

    glPushMatrix();

        glColor3f(1,1,1);glutSolidCube(0.4);

        glPushMatrix();

            glTranslatef(-0.2,0.2,0);///掛上肩膀

            glRotatef(angle,0,0,1);///轉動

            glTranslatef(-0.1,0,0);///旋轉中心(關節)移到畫面中心

            drawArml();///畫手臂

        glPopMatrix();

    glPopMatrix();

    ///glutSolidSphere(0.3,30,30);

    ///glutWireSphere(0.3,30,30);

    glutSwapBuffers();

}






沒有留言:

張貼留言

距地表面160 Week11

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