2022年5月2日 星期一

09163076 week09

1.glTexCoord2f使用方法

glTexCoord2f(x,y); x,y是貼圖的座標位置

2.安裝openCV

全部按預設,Add OpenCV to the system PATH for all users一定要裝在c槽

3.1 File-new-emptyfile,week09_opencv.cpp

#include <opencv/highgui.h>

main(){

    IplImage*img=cvLoadImage("01.png");///讀圖

    cvShowImage("week09",img);///秀圖

    cvWaitKey(0);

}

3.2 Settings-Compiler...->Search directories->Complier->Add

C:\OpenCV2.1\include

Search directories->Linker->Add

C:\OpenCV2.1\lib

Linker setting->Add

cv210 cxcore210 highgui210

3.3執行

4..glut 使用texture 

#include <GL/glut.h>

#include <opencv/highgui.h>

void myTexture(){

    IplImage*img = cvLoadImage("earth.png");

    cvShowImage("img",img);

    cvWaitKey(0);

}

void display(){

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

        glColor3f(1,0,0);

        glutSolidTeapot(0.3);

    glutSwapBuffers();

}

int main(int argc, char *argv[]){

    glutInit(&argc,argv);

    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("week09");

    glutDisplayFunc(display);

    myTexture();

    glutMainLoop();

    return 0;

}

將圖片(earth.png)存到桌面freeglut-bin資料夾內

img關掉茶壺才會出現

5.把地圖貼在茶壺裡

#include <opencv/highgui.h>

#include <opencv/cv.h>

#include <GL/glut.h>

int myTexture(char * filename)

{

    IplImage * img = cvLoadImage(filename);

    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(void)

{


    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glColor3d(1,1,1);


    glutSolidTeapot(0.3);


    glutSwapBuffers();

}

int main(int argc, char *argv[])

{

    glutInit(&argc, argv);

    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("week09 Texture");

    glutDisplayFunc(display);


    myTexture("earth.png");


    glutMainLoop();


    return EXIT_SUCCESS;

}






沒有留言:

張貼留言