2021年3月31日 星期三

dogg

 






今天做的第一個是會轉的方塊


程式碼:

#include <GL/glut.h>

float angle=0;///TODO void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清空 glPushMatrix();///TODO: 備份矩陣 glRotatef(angle,0,0,1); glutSolidCube(1);///TODO:畫個方塊 glPopMatrix();///TODO: 還原矩陣 glutSwapBuffers();///交換兩倍的buffers angle++; } int main(int argc, char *argv[]) { glutInit(&argc, argv);///(1)GLUT初始設定 glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///(2)顯示模式 glutCreateWindow("08160830");///(3)開視窗 glutDisplayFunc(display); glutIdleFunc(display);///等一下要顯示的函示 glutMainLoop();///TODO :我們註冊mouse函式 }




改變了長度和顏色
程式碼:



























#include <GL/glut.h>
float angle=0;///TODO void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清空 glPushMatrix();///TODO: 備份矩陣 glRotatef(angle,0,0,1);///對中心轉動 glScalef(0.5,0.1,0.1);///細長的 glColor3f(0,0,1); glutSolidCube(1);///TODO:畫個方塊 glPopMatrix();///TODO: 還原矩陣 glutSwapBuffers();///交換兩倍的buffers angle++; } int main(int argc, char *argv[]) { glutInit(&argc, argv);///(1)GLUT初始設定 glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///(2)顯示模式 glutCreateWindow("08160830");///(3)開視窗 glutDisplayFunc(display); glutIdleFunc(display);///等一下要顯示的函示 glutMainLoop();///TODO :我們註冊mouse函式 }



下一步加了一行程是讓物體移動
程式碼:


#include <GL/glut.h> float angle=0;///TODO void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清空 glPushMatrix();///TODO: 備份矩陣 glRotatef(angle,0,0,1);///對中心轉動 glTranslatef(0.25,0,0);///移動關節 glScalef(0.5,0.1,0.1);///細長的 glColor3f(0,0,1); glutSolidCube(1);///TODO:畫個方塊 glPopMatrix();///TODO: 還原矩陣 glutSwapBuffers();///交換兩倍的buffers angle++; } int main(int argc, char *argv[]) { glutInit(&argc, argv);///(1)GLUT初始設定 glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///(2)顯示模式 glutCreateWindow("08160830");///(3)開視窗 glutDisplayFunc(display); glutIdleFunc(display);///等一下要顯示的函示 glutMainLoop();///TODO :我們註冊mouse函式 }


讓藍色物體中心點一道右上角然後再做個大白

程式碼:
#include <GL/glut.h> float angle=0;///TODO void hand() { glPushMatrix();///細長的 glScalef(0.5,0.1,0.1);/// glColor3f(0,0,1); glutSolidCube(1);///方塊 glPopMatrix(); } void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清空 glColor3f(1,1,1); glutSolidCube(1); glPushMatrix();///TODO: 備份矩陣 glTranslatef(0.5,0.5,0);///移動到右上角 glRotatef(angle,0,0,1);///對中心轉動 glTranslatef(0.25,0,0);///移動關節 hand(); glPopMatrix();///TODO: 還原矩陣 glutSwapBuffers();///交換兩倍的buffers angle++; } int main(int argc, char *argv[]) { glutInit(&argc, argv);///(1)GLUT初始設定 glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///(2)顯示模式 glutCreateWindow("08160830");///(3)開視窗 glutDisplayFunc(display); glutIdleFunc(display);///等一下要顯示的函示 glutMainLoop();///TODO :我們註冊mouse函式 }





加一根手

程式碼:
#include <GL/glut.h>
float angle=0;///TODO
void hand()
{
glPushMatrix();///細長的
glScalef(0.5,0.1,0.1);///
glutSolidCube(1);///方塊
glColor3f(0,0,1);
glPopMatrix();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清空
}
void display()
glColor3f(1,1,1); glutSolidCube(0.5);
{
glTranslatef(0.25,0.25,0);///移動到右上角
glPushMatrix();///TODO: 備份矩陣

glRotatef(angle,0,0,1);///對中心轉動
glTranslatef(0.25,0,0);
glTranslatef(0.25,0,0);///移動關節
hand();
glPopMatrix();
glPushMatrix();
glRotatef(angle,0,0,1);
hand();
glTranslatef(0.25,0,0);
int main(int argc, char *argv[])
glPopMatrix();///TODO: 還原矩陣
glutSwapBuffers();///交換兩倍的buffers
angle++;
}

{
glutCreateWindow("08160830");///(3)開視窗
glutInit(&argc, argv);///(1)GLUT初始設定

glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///(2)顯示模式

glutDisplayFunc(display);
glutIdleFunc(display);///等一下要顯示的函示
glutMainLoop();///TODO :我們註冊mouse函式

}










































沒有留言:

張貼留言

距地表面160 Week11

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