PDA

View Full Version : Is it an omission in the reference doc?



newbiecow
12-05-2012, 05:04 AM
I tried to map some texture with the function glTexImage2D and set the parameter format to RGBA8.
It's an obvious mistake, and I get the error code GL_INVALID_ENUM.
But according to the referenc doc of the function glTexImage2D, only four circumstances are listed:


GL_INVALID_ENUM is generated if target is not GL_TEXTURE_2D, GL_TEXTURE_1D_ARRAY, GL_TEXTURE_RECTANGLE, GL_PROXY_TEXTURE_2D, GL_PROXY_TEXTURE_1D_ARRAY, GL_PROXY_TEXTURE_RECTANGLE, GL_PROXY_TEXTURE_CUBE_MAP, GL_TEXTURE_CUBE_MAP_POSITIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z, or GL_TEXTURE_CUBE_MAP_NEGATIVE_Z.

GL_INVALID_ENUM is generated if target is one of the six cube map 2D image targets and the width and height parameters are not equal.

GL_INVALID_ENUM is generated if type is not a type constant.


So my understanding is because setting format to GL_RGB8 is so obvious a mistake that it's omitted in the reference doc and any mistake as naive as this will be omitted.
Am I right?

Thanks in advance!

Aestivae
12-05-2012, 05:26 AM
This (http://www.opengl.org/sdk/docs/man/xhtml/glTexImage2D.xml) is the documentation you're referring to, right?

In a sense, you're right, but it's mostly that GL_INVALID_ENUM is somewhat of a universal error code; since just about every non-numerical parameter in OpenGL takes a GLenum, GL_INVALID_ENUM gets triggered every time you, well, give anything an invalid enum.

Up at the top, in the parameter specifications, it describes which GLenums are allowed.



format


Specifies the format of the pixel data. The following symbolic values are accepted: GL_RED, GL_RG, GL_RGB, GL_BGR, GL_RGBA, and GL_BGRA.

Here, it's implied that anything outside of those will throw a GL_INVALID_ENUM error.

thokra
12-05-2012, 05:58 AM
The reference clearly says right at the top of the page



format
Specifies the format of the pixel data. The following symbolic values are accepted: GL_RED, GL_RG, GL_RGB, GL_BGR, GL_RGBA, and GL_BGRA.


However, from what I read, the spec doesn't mention any errors if the values aren't correct. This either means the I overread it or that it's actually a spec bug. It's inconsistent to say the least.