2021年3月17日 星期三

美乃滋是不是一種樂器


 


今天第一步做了一個可以用滑鼠點來表示座標的程式





程式碼 :

#include <GL/glut.h> #include <stdio.h>///TODO: 因為要printf() void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glutSolidTeapot(0.3); glutSwapBuffers(); } void mouse (int button,int state,int x ,int y) { ///TODO: 左,中,右鍵 下,上,X座標,Y座標 printf("button:%d state:%d x:%d y:%d",button, state,x,y); } ///TODO: 印出這些值,觀察一下 int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitWindowSize(640,480); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); glutCreateWindow("08160830"); glutDisplayFunc(display); glutMouseFunc(mouse);///等一下要顯示的函示 glutMainLoop();///TODO :我們註冊mouse函式 return EXIT_SUCCESS;///主要迴圈 }





=========================================================================

第二步 : 做了一個可以畫畫的程式

 程式碼:

#include <GL/glut.h> int N=0,vx[3000],vy[3000]; void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glBegin(GL_LINE_LOOP); for(int i=0;i<N;i++){ glVertex2f( (vx[i]-150)/150.0,-(vy[i]-150)/150.0); } ///減一半,在除一半 減一半,在除一半,加負號 glEnd(); glutSwapBuffers();///交換兩倍的buffers } void motion (int x ,int y) { ///TODO2: mouse motion 再拖動他 vx[N]=x; vy[N]=y; ///把vx,vy的存起來 N++; display();///邊動mouse motion,邊畫display() } int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitWindowSize(640,480); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); glutCreateWindow("08160830"); glutDisplayFunc(display); glutMotionFunc( motion);///等一下要顯示的函示 glutMainLoop();///TODO :我們註冊mouse函式 }


































沒有留言:

張貼留言

距地表面160 Week11

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