2014-02-11 3 views
1

OpenGL에는 리소스 파일에서 텍스처를로드하는 간단한 함수가 있으므로 대신 사용하는 (HBITMAP)LoadImage(); 함수를 제거 할 수 있습니다.OpenGL은 리소스에서 텍스처를로드하는 기능을 가지고 있습니까?

DirectX의 예로서 D3DXCreateTextureFromResourceA(); 기능으로 수행 할 수 있습니다.

+2

OpenGL은 자산 로딩과 관련이 없습니다. 픽셀 만 그릴 수 있습니다. 그게 전부 야. 자산을 메모리에로드하려면 외부 라이브러리를 사용해야한다. –

+0

@MichaelIV : 리소스 로딩에서 자산을 구현하는 것이 완벽하게 가능하다고 말하고 있습니다. 실제로 제 초기 OpenGL 프로그램에서 저는 이것을 실제로했습니다 (코드는 끔찍합니다). – datenwolf

+0

물론 @datenwolf!하지만 OpenGL을 처음 접하는 많은 사람들은 API가 자산로드 기능을 제공한다고 잘못 가정합니다. –

답변

0

Qt를 사용하면 OpenGL을 사용하여 코드를 작성하는 것이 쉽습니다.

다양한 형식으로 많은 이미지를로드 할 수 있습니다.

QString fileName = QFileDialog::getOpenFileName(this, "open image file", ".", "Image files (*.bmp *.jpg *.pbm *.pgm *.png *.ppm *.xbm *.xpm);;All files (*.*)"); 
QImage image; 

image.load(fileName); 

또한 일반 이미지를 OpenGL 텍스처로 쉽게 변경할 수 있습니다.

QImage textureImage = QGLWidget::convertToGLFormat(image); 
GLuint glTexture; 

glGenTextures(1, &glTexture); 
glBindTexture(GL_TEXTURE_2D, glTexture); 
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB16, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, textureImage.bits()); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);