* OpenGL [#fc641faa] #contents ** 対応しているテクスチャフォーマットを調べる。 [#z3f1f999] #code(c,){{ namespace { void t_formatCheck( const GLenum aInternalFormat , const char* aInternalFormatName , const GLenum aFormat ) { GLuint textureName; // 前処理 glEnable(GL_TEXTURE_2D); glGenTextures(1 , &textureName); glBindTexture(GL_TEXTURE_2D , textureName); // テクスチャ作成 glGetError(); glTexImage2D( GL_PROXY_TEXTURE_2D , 0 , aInternalFormat , 4 , 4 , 0 , aFormat , GL_UNSIGNED_BYTE , 0 ); if ( glGetError() == GL_NO_ERROR ) { GLint red = 0, green = 0, blue = 0, alpha = 0, luminance = 0, intensity = 0 ; glGetTexLevelParameteriv(GL_PROXY_TEXTURE_2D, 0, GL_TEXTURE_RED_SIZE, &red) ; glGetTexLevelParameteriv(GL_PROXY_TEXTURE_2D, 0, GL_TEXTURE_GREEN_SIZE, &green) ; glGetTexLevelParameteriv(GL_PROXY_TEXTURE_2D, 0, GL_TEXTURE_BLUE_SIZE, &blue) ; glGetTexLevelParameteriv(GL_PROXY_TEXTURE_2D, 0, GL_TEXTURE_ALPHA_SIZE, &alpha) ; glGetTexLevelParameteriv(GL_PROXY_TEXTURE_2D, 0, GL_TEXTURE_LUMINANCE_SIZE, &luminance) ; glGetTexLevelParameteriv(GL_PROXY_TEXTURE_2D, 0, GL_TEXTURE_INTENSITY_SIZE, &intensity) ; printf( "%s: Success(%d,%d,%d,%d,%d,%d)\n" , aInternalFormatName , red , green , blue , alpha , luminance , intensity ); } else { printf( "%s: Failure\n" , aInternalFormatName ); } // 後処理 glDeleteTextures(1 , &textureName); glDisable(GL_TEXTURE_2D); }; #define FormatCheck( aInternalFormat , aFormat ) t_formatCheck( aFormat , #aFormat , aInternalFormat ) void t_allFormatCheck() { FormatCheck( GL_ALPHA, GL_ALPHA ); FormatCheck( GL_ALPHA, GL_ALPHA4 ); FormatCheck( GL_ALPHA, GL_ALPHA8 ); FormatCheck( GL_ALPHA, GL_ALPHA12 ); FormatCheck( GL_ALPHA, GL_ALPHA16 ); FormatCheck( GL_LUMINANCE, GL_LUMINANCE ); FormatCheck( GL_LUMINANCE, GL_LUMINANCE4 ); FormatCheck( GL_LUMINANCE, GL_LUMINANCE8 ); FormatCheck( GL_LUMINANCE, GL_LUMINANCE12 ); FormatCheck( GL_LUMINANCE, GL_LUMINANCE16 ); FormatCheck( GL_LUMINANCE_ALPHA, GL_LUMINANCE4_ALPHA4 ); FormatCheck( GL_LUMINANCE_ALPHA, GL_LUMINANCE6_ALPHA2 ); FormatCheck( GL_LUMINANCE_ALPHA, GL_LUMINANCE8_ALPHA8 ); FormatCheck( GL_LUMINANCE_ALPHA, GL_LUMINANCE8_ALPHA8 ); FormatCheck( GL_LUMINANCE, GL_INTENSITY ); FormatCheck( GL_LUMINANCE, GL_INTENSITY4 ); FormatCheck( GL_LUMINANCE, GL_INTENSITY8 ); FormatCheck( GL_LUMINANCE, GL_INTENSITY12 ); FormatCheck( GL_LUMINANCE, GL_INTENSITY16 ); FormatCheck( GL_RGB, GL_R3_G3_B2 ); FormatCheck( GL_RGB, GL_RGB4 ); FormatCheck( GL_RGB, GL_RGB5 ); FormatCheck( GL_RGB, GL_RGB8 ); FormatCheck( GL_RGB, GL_RGB10 ); FormatCheck( GL_RGB, GL_RGB12 ); FormatCheck( GL_RGB, GL_RGB16 ); FormatCheck( GL_RGBA, GL_RGBA2 ); FormatCheck( GL_RGBA, GL_RGBA4 ); FormatCheck( GL_RGBA, GL_RGB5_A1 ); FormatCheck( GL_RGBA, GL_RGBA8 ); FormatCheck( GL_RGBA, GL_RGB10_A2 ); FormatCheck( GL_RGBA, GL_RGBA12 ); FormatCheck( GL_RGBA, GL_RGBA16 ); } } }} |