2022年4月26日 星期二

為哥的圖學筆記week10

Step01-1:開啟一個GLUT專案

Step01-2:複製上週貼圖座標的程式碼

```

#include <opencv/highgui.h>

#include <opencv/cv.h>

#include <GL/glut.h>

int myTexture(char * filename)

{

    IplImage * img = cvLoadImage(filename); ///OpenCV讀圖


    cvCvtColor(img,img, CV_BGR2RGB);


    glEnable(GL_TEXTURE_2D);


    GLuint id;


    glGenTextures(1, &id);


    glBindTexture(GL_TEXTURE_2D, id);


    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);


    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);


    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);


    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);


    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img->width, img->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img->imageData);


    return id;

}

void display()

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glutSolidTeapot( 0.3 );

    glutSwapBuffers();

}

int main(int argc, char**argv)

{

    glutInit( &argc, argv );

    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("week09 texture");

    glutDisplayFunc(display);

    myTexture("earth.jpg");

    glutMainLoop();

}

```

OpenCV設定: setting-compiler , search directories , compiler include: C:\opencv2.1\include

OpenCV設定: setting-compiler , search directories , Linker lib目錄: C:\opencv2.1\lib

OpenCV設定: setting-compiler , Linker設定: 咒語 cv210 cxcore210 highgui210

XXX.jpg 圖檔要放哪: 工作目錄working_dir   (in C:\Users\...\Desktop\freeglut\bin)


Step02-1:


Step02-2:第二個主題: 上週貼圖+貼到圓球=會轉的地球 

1.新專案week10_texture_earth

最上面要加這行


display();




程式碼:

#include <opencv/highgui.h>

#include <opencv/cv.h>

#include <GL/glut.h>

GLUquadric * sphere = NULL;///指標指到二次曲面

int myTexture(char * filename)

{

    IplImage * img = cvLoadImage(filename); ///OpenCV讀圖


    cvCvtColor(img,img, CV_BGR2RGB);


    glEnable(GL_TEXTURE_2D);


    GLuint id;


    glGenTextures(1, &id);


    glBindTexture(GL_TEXTURE_2D, id);


    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);


    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);


    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);


    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);


    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img->width, img->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img->imageData);


    return id;

}

void display()

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    gluQuadricTexture(sphere,1);///設好貼圖

    gluSphere(sphere,1,30,30);///畫圓球

    glutSwapBuffers();

}

int main(int argc, char**argv)

{

    glutInit( &argc, argv );

    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("week10 texture");

    glutDisplayFunc(display);

    myTexture("earth.jpg");///地球的地圖

    sphere = gluNewQuadric();///準備好二次曲面

    glutMainLoop();


}


地球旋轉:



程式碼:







沒有留言:

張貼留言

VERY BEAUTIFUL, VERY POWERFUL

一.     一樣先安裝且設定好freeglut,OpecCV, 開啟CodeBlocks建立新專案 week11_gundam,                 把 MyGundam.zip下載解壓縮後的data資料夾放到freeglut/bin裡面 把week09_openc...