2017-07-10 11 views
0

OpenGLバージョン> = 3.3を使用するチュートリアル(スプライトレンダリング)を複製したいと考えています。例えばどのようにして別のOpenGLプロファイルを利用できますか?

ジオメトリシェーダは3.2で導入された、と私はこのエラーを取得した。

error: ‘GL_GEOMETRY_SHADER’ was not declared in this scope 

私は最新のものに私のメサドライバを更新しました。私は本当に理解していない、どのようにOpenGLのコンパイル/リンク時に新しいバージョンを選択することができます:

➜glxinfo |グレップ-i「バージョン」

server glx version string: 1.4 
client glx version string: 1.4 
GLX version: 1.4 
    Version: 17.1.4 
    Max core profile version: 4.5 
    Max compat profile version: 3.0 
    Max GLES1 profile version: 1.1 
    Max GLES[23] profile version: 3.1 
OpenGL core profile version string: 4.5 (Core Profile) Mesa 17.1.4 
OpenGL core profile shading language version string: 4.50 
OpenGL version string: 3.0 Mesa 17.1.4 
OpenGL shading language version string: 1.30 
OpenGL ES profile version string: OpenGL ES 3.1 Mesa 17.1.4 
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10 

は、私は本当にこれを解釈することはできませんが、バージョン4.5を使用してコアプロファイルのいくつかの種類があると言います。このプロファイルをどのように活用すればよいですか?

私はこのような私のコードでGLコンテキストを初期化します。

if(!glfwInit()) e_glfw_init(); 
m_window = glfwCreateWindow(WINDOW_WIDTH, WINDOW_HEIGHT, WINDOW_TITLE.c_str(), nullptr, nullptr); 
if(m_window == nullptr) e_window_context(); 
glfwMakeContextCurrent(m_window); 
glewExperimental = true; 
if(glewInit() != GLEW_OK) e_glew_init(); 
+4

あなたがどのようにあなたのコンテキストを初期化する? – BDL

+3

使用しているOpenGLヘッダー/ロードライブラリは何ですか?私はこれらのヘッダを含めてい –

+0

@NicolBolas: 'GL/glew.h' ' GLFW/glfw3.h' 'GLM/glm.hpp' ' GL/glu.h' 'GLM/GTC/type_ptr .hpp' –

答えて

0

glfw documentationによると、あなたはglfwWindowHint関数を使用してOpenGLのバージョンとプロファイルを指定することができます。

if(!glfwInit()) e_glfw_init(); 

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4); 
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 5); 
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); 

m_window = glfwCreateWindow(WINDOW_WIDTH, WINDOW_HEIGHT, WINDOW_TITLE.c_str(), 
          nullptr, nullptr); 
+0

さて、私はウィンドウのOpenGLバージョンを変更したくないので、コードをコンパイルするときに新しいOpenGLの機能を使いたいと思っています。 (基本的に新しいヘッダーを含み、よりコンパイルされた新しいライブラリ/共有オブジェクトをリンクします) –

+3

"新しい"ライブラリやヘッダファイルはありません。すべてのメソッドと拡張は、この1つのライブラリからロードされます(これは 'glewInit'のものです)。 'GL_GEOMETRY_SHADER'は、現在の' glew.h'ヘッダファイルで定義されるべきです。 – BDL

+0

ありがとう私はしようと定義を見つける! –

関連する問題