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 件のコメント:
コメントを投稿