提示コードですが error: GLSL 4.20 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES, and 3.00 ES
表示されてしまいます。どうすればに対応できるのでしょうか?その他のバージョン3.3 4.2等を試しましたがどれも対応していません。また1.○○バージョンだとコンパイルエラーになるので使いたくありませんこれはどうやって対応するのでしょうか?
自分の環境は現在4.2まで対応しているのですがどうすればGLSLを4.2に対応できるのでしょうか?
参考サイト: https://stackoverflow.com/questions/27407774/get-supported-glsl-versions/27410925
参考サイト: https://01.org/linuxgraphics/downloads/stack
試したこと
別のバージョンで試した。
$ glxinfo | grep OpenGL OpenGL vendor string: Intel Open Source Technology Center OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 4000 (IVB GT2) OpenGL core profile version string: 4.2 (Core Profile) Mesa 21.1.5 OpenGL core profile shading language version string: 4.20 OpenGL core profile context flags: (none) OpenGL core profile profile mask: core profile OpenGL core profile extensions: OpenGL version string: 3.0 Mesa 21.1.5 OpenGL shading language version string: 1.30 OpenGL context flags: (none) OpenGL extensions: OpenGL ES profile version string: OpenGL ES 3.0 Mesa 21.1.5 OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00 OpenGL ES profile extensions:
$ ./GL Complie Error: Vertex Shader 0:4(10): error: GLSL 4.20 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES, and 3.00 ES Complie Error: Fragment Shader 0:4(10): error: GLSL 4.20 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES, and 3.00 ES Program Info Log: error: linking with uncompiled/unspecialized shadererror: linking with uncompiled/unspecialized shader Complie Error: Vertex Shader 0:4(10): error: GLSL 3.30 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES, and 3.00 ES Complie Error: Fragment Shader 0:4(10): error: GLSL 3.30 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES, and 3.00 ES Program Info Log: error: linking with uncompiled/unspecialized shadererror: linking with uncompiled/unspecialized shader setBindAttribVertex(): -1 setBindAttribVertex(): -1 glGetError(): 0x502 GL: source/Shader.cpp:261: void FrameWork::Shader::setUniform4f(const char*, glm::vec4): Assertion `0' failed. 中止 (コアダンプ)
#include "../header/FrameWork.hpp" #include <iostream> #include "../header/FrameWork.hpp" #include "../header/Camera.hpp" int main() { FrameWork::Init(glm::ivec2(48 * 26, 48 * 18), glm::ivec2(3,3), "Dungeon"); // 初期化 FrameWork::Camera_2D::Init(); //カメラ初期化 FrameWork::Circle circle; FrameWork::Text text; text.setString(30,glm::vec4(255,0,0,255),"Hello World"); while (*FrameWork::windowContext) { FrameWork::windowContext->FrameUpdate(glm::vec4(0,0,0,255)); //circle.Draw(glm::vec2(100,100),glm::vec4(0,255,0,255),100,100,20); text.DrawString(glm::vec2(100,100)); FrameWork::windowContext->Wait(); FrameWork::windowContext->SwapBuffers(); } return 0; }
/*######################################################################### # ###########################################################################*/ #version 330 #extension GL_ARB_explicit_uniform_location : require // ###################### ###################### layout(location = 0) in vec2 vertexPosition; layout(location = 1) in vec2 vertexUV; // ###################### ###################### layout(location = 1) out vec2 texCoord; // ###################### Uniform ###################### uniform mat4 uViewProjection; void main() { vec4 vertex = vec4(vertexPosition.x,vertexPosition.y,0.0,1.0); gl_Position = (uViewProjection * vertex); texCoord = vertexUV; }
/*######################################################################### # ###########################################################################*/ #version 330 #extension GL_ARB_explicit_uniform_location : require // ###################### ###################### layout(location = 1 ) in vec2 texCoord; // ###################### ###################### out vec4 color; // ###################### Unifrom ###################### uniform sampler2D text; uniform vec4 uFragment; void main() { vec4 sampled = vec4(1.0, 1.0, 1.0, texture(text, texCoord).r); color = uFragment * sampled; }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。