2014-10-05 3 views
0

아래의 매개 변수를 사용하여 이미지 데이터를 BYTE *로 사용하여 gl :: Texture 객체를 만들려고합니다.Cinder로 변환 gl :: Texture

FreeGLUT - 내가 그러나 나는 쇠 찌끼에서 GL :: 텍스처 개체를 만들 수있는 방법을 찾을 수 없습니다, 2 차원 텍스처를 만들고 쿼드 :

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, textureWidth, textureHeight, 0, GL_BGRA_EXT, GL_UNSIGNED_BYTE, data); 
glBindTexture(GL_TEXTURE_2D, 0); etc etc 

이 잘 작동에 바인딩하려면이 옵션을 사용합니다.

text = gl::Texture(loadImage(loadAsset("text.jpg"))); // works with images files 
text = gl::Texture(data, GL_RGBA8, 640, 480); // BTYE * data This gives me a grey screen - 

가장 가능성이있는 것처럼 보였지만 형식 형식 = format();

Texture (const unsigned char *data, int dataFormat, int aWidth, int aHeight, Format format=Format()) 

나는이 작품이 어떻게 작동하는지 더 잘 이해하지 못하고 온라인에서 더 좋은 튜토리얼을 찾을 수 없다. 감사. 분명히

답변

1

dataFormat는 glTexImage2D의 형식 매개 변수이며 GL_RGBA 또는 GL_RGB (또는 제공된 예에서와 같이 GL_BGRA_EXT)

당신이 원하는 것은 Format 구조체를 통해 설정됩니다 "내부 형식이"같은 것을해야한다 .

gl::Texture::Format fmt; 
fmt.setInternalFormat(GL_RGBA8); 
text = gl::Texture(data, GL_RGBA, 640, 480, fmt); 

GL_UNSIGNED_BYTE 형식이 미리 설정 한 콘크리트 래퍼 때때로

의 생성자에서 그냥 대신 100 %를 찾으려고 노력의 코드를 보면 쉽게 될 수있다 : 그래서 당신은 좋아하는 설정 해당 설명서

+0

고마워요. 당신의 대답은 이해가되지만, 글 : draw (text, getWindowBounds()); 나는 아직도 회색 배경을 얻는다. 그것은 gl :: Texture (파일에서 loadImage 사용할 때 작동합니다. 내가 다르게 할 필요가있는 다른 무언가가 있습니까? freeglUT 있음 쿼드에 텍스처를 매핑하는 내 이해 텍스처가 gl 함께 작동합니다. 그리기 같이 (같이 파일에서로드 된 텍스처가 올바르게 표시됩니다.) – user1546650

+0

@ user1546650 '데이터'가 실제로 이미지 데이터를 가리키는 지 확인하는 것이 중요합니다. 디버거를 사용하여 값이 올바른지 확인하십시오. – PeterT

+0

감사합니다. 나머지 문제는 내 주요 코드의 버그입니다 (디버거를 확인하려고했으나 찾고있는 것이 전부는 아닙니다 : P). – user1546650