Mac の OpenGL 3.2 で glGetString(GL_EXTENSIONS) がなぜか NULL を返すと思ったら、今は glGetIntergerv(GL_NUM_EXTENSIONS, &i) と glGetStringi(GL_EXTENSSIONS, i) を使うことになっていた。
#include <OpenGL/OpenGL.h> #include <OpenGL/gl3.h> #include <iostream> int main() { CGLPixelFormatAttribute attribs[] = { kCGLPFAOpenGLProfile, (CGLPixelFormatAttribute)kCGLOGLPVersion_3_2_Core, (CGLPixelFormatAttribute)0 }; CGLPixelFormatObj pix; GLint npix; CGLChoosePixelFormat(attribs, &pix, &npix); CGLContextObj ctx; CGLCreateContext(pix, 0, &ctx); CGLSetCurrentContext(ctx); std::cout << "vendor : " << glGetString(GL_VENDOR) << std::endl; std::cout << "renderer : " << glGetString(GL_RENDERER) << std::endl; std::cout << "version : " << glGetString(GL_VERSION) << std::endl; std::cout << "shader : " << glGetString(GL_SHADING_LANGUAGE_VERSION) << std::endl; std::cout << "extensions : " << std::endl; GLint count; glGetIntegerv(GL_NUM_EXTENSIONS, &count); for (GLint i = 0; i < count; i++) { std::cout << "\t" << glGetStringi(GL_EXTENSIONS, i) << std::endl; } CGLReleaseContext(ctx); CGLReleasePixelFormat(pix); return 0; }コンパイル方法:
$ clang++ -Wall -framework OpenGL -framework Foundation -o gl gl.cpp実行結果:
vendor : NVIDIA Corporation renderer : NVIDIA GeForce GT 650M OpenGL Engine version : 3.2 NVIDIA-8.6.22 shader : 1.50 extensions : GL_ARB_instanced_arrays GL_ARB_occlusion_query2 GL_ARB_shader_bit_encoding GL_ARB_timer_query GL_EXT_depth_bounds_test GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_texture_compression_s3tc GL_EXT_texture_filter_anisotropic GL_EXT_texture_mirror_clamp GL_EXT_texture_sRGB_decode GL_APPLE_client_storage GL_APPLE_container_object_shareable GL_APPLE_object_purgeable GL_APPLE_rgb_422 GL_APPLE_row_bytes GL_APPLE_texture_range
0 件のコメント:
コメントを投稿