Loading [MathJax]/jax/output/HTML-CSS/config.js

2012年12月16日日曜日

Mac で glGetString(GL_EXTENSIONS)

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

コメントを投稿