iOS에서 OpenGLES에 문제가 있습니다.Objective-C에서 GLenum 속성으로 OpenGL
@property (nonatomic, assign) GLint internalFormat;
@property (nonatomic, assign) GLenum format;
@property (nonatomic, assign) GLenum target;
문제가이 방식으로 작동하지 않는다는 것입니다 :이 같은 선언
if (numberOfMipmaps > 0) {
if (textureData != 0)
glDeleteTextures(1, &textureData);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glGenTextures(1, &textureData);
glBindTexture(GL_TEXTURE_2D, textureData);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
CHECK_GL_ERROR();
for (GLint i = 0; i < numberOfMipmaps; i++) {
unsigned char *data = mipmaps[i].address;
glTexImage2D(GL_TEXTURE_2D, i, internalFormat, width, height, 0, format, target, data);
//glGenerateMipmapOES(GL_TEXTURE_2D);
CHECK_GL_ERROR();
width = MAX(width >> 1, 1);
height = MAX(height >> 1, 1);
}
}
internalFormat, 형식과 대상이 syntesized되는 속성을 통해 내가로드 텍스처를 렌더링합니다. 컴파일이나 런타임 오류가 발생하지 않습니다. 나는 텍스처 메모리에 아무런 데이터도로드되지 않는다는 표시 인 흰색 화면 만 볼 수 있습니다. 난 내 생성자이 뒤에 아이디어는 RGB565 같은 다른 텍스처 형식을 제공하기 위해 내 클래스에서 상속하는 것입니다
internalFormat = GL_RGBA;
format = GL_RGBA;
target = GL_UNSIGNED_SHORT_5_5_5_1;
에서이 세 가지 변수를 설정합니다. 난 단지 내가 GL 텍스처를 생성하는 방법에 과부하 내가 속성을 사용할 때 작동하지 않는 이유
glTexImage2D(GL_TEXTURE_2D, i, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_SHORT_565, data);
누군가가 나에게 설명 할 수있는 glTexImage2D 기능을 하드 코딩하는 경우 그것은 작동하는 데 사용됩니다.
편집 : 분명히 밝혀야합니다. 질문은 왜 glTexImage2D 함수에서 매개 변수로 속성을 사용합니까?
EDIT 2 : 내가 문제가 있다고 생각합니다. GL_RGBA와 GL_UNSIGNED ...는 오픈 글 헤더 파일에 정의되어 있으므로, ObjC 프리 컴파일러는 16 진 코드를 glTexImage2D 함수 호출에 붙여 넣습니다. 변수를 사용하면 프리 컴파일러는 아무 것도 변경하지 않고 런타임에 값을 삽입하므로 작동하지 않습니다.
GL_UNSIGNED_SHORT_5_5_5_1 또는 GL_UNSIGNED_SHORT_565를 (를) 타겟으로 사용 하시겠습니까? 속성으로 하나의 값을 사용하기 때문에 glTexImage2D 함수 호출의 예제에서는 다른 값을 사용합니다. –
어디에서 할당 했습니까? 'init' 메소드에서? 서브 클래스에서''슈퍼 인니 ''라고 부르셨습니까? –
@ MārtiņšMožeiko : 글쎄, 둘 다. 나는 메인 클래스에서 상속하고 싶다. 그러나 thats 요점 아닙니다. 로드 및 속성을 사용하면 속성을 사용하지 않는 경우 작동합니다. 나는 메서드를 디버깅하고 속성에 올바른 값이 있는지 두 번 확인했습니다. – nurbs999