提示コードですが////コメント部内部でバージョンを指定しています。提示画像ですがなぜGLSLのバージョンを指定するとエラーが出るのでしょうか?バージョンを300 ,280等に落としてみましたが同じです。
glGetErro():
「 GL_INVALID_OPERATION 0x0502 現在のステートで無効な操作をしている場合、もしくは廃止された関数を呼び出した場合」
エラー[
ERROR: 0:1: '' : Incorrect GLSL version: 280
WARNING: 0:4: 'GL_ARB_explicit_attrib_location' : extension is not available in current GLSL version
WARNING: 0:4: 'GL_ARB_explicit_attrib_location' : extension is not available in current GLSL version
WARNING: 0:4: 'GL_ARB_explicit_attrib_location' : extension is not available in current GLSL version
ERROR: 0:12: 'position' : undeclared identifier
ERROR: 0:12: 'y' : vector field selection out of range
ERROR: 0:13: 'vfragColor' : undeclared identifier
ERROR: 0:13: 'fragColor' : undeclared identifier
]
日本語訳[ 拡張機能は現在のGLSLバージョンでは使用できません ]
cpp
1//#define GLEW_STATIC //スタティックリンク 2#include <iostream> 3#include <fstream> 4#include <cstdlib> 5#include <vector> 6#include <glew/include/GL/glew.h> 7#include <glfw/include/GLFW/glfw3.h> 8 9#include "Window.hpp" 10#include "Shader.hpp" 11#include "DrawTest.hpp" 12 13 14int main() 15{ 16 if (glfwInit() == GL_FALSE) 17 { 18 std::cerr << "glfw初期化失敗。" << std::endl; 19 return -1; 20 } 21 22 atexit(glfwTerminate); //プログラム終了時の処理を登録 23 Window window; //コンテキストを作成 24//////////////////////////////////////////////////////////////////////////////// 25 //OpenGL Verison 3.2 Core Profile を選択する 26// glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,3); 27// glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR,2); 28// glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT,GL_TRUE); 29// glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE); 30/////////////////////////////////////////////////////////////////////////////// 31 glClearColor(1.0, 0.0, 0.0, 1.0); //背景色 32// ############################################################################# 33 34 DrawTest test; 35 36 37 Shader shader("Test.vert","Test.frag"); 38 39 shader.setBindAttribVertex(0, "Position"); 40 shader.setBindAttribVertex(1, "fragColor"); 41 42 shader.setBindAttribFragment(0, "fragment"); 43 44 45 while (window) 46 { 47 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //カラーバッファをクリア 48 shader.Active(); 49 50 test.Draw(); 51 52 53 54 55 56 57 58 59 window.SwapBuffers(); //ダブルバッファリング 60 } 61 62} 63
GLSL
1#version 320 core 2 3 4layout(location = 0) in vec2 position; 5 6in vec4 fragColor; 7 8out vec4 vfragColor; 9 10void main() 11{ 12 gl_Position = vec4(position.x,position.y,1.0,1.0); //座標 13 vfragColor = fragColor; //カラー 14}
GLSL
1#version 320 core 2 3out vec4 fragment; 4 5in vec4 vfragColor; //頂点カラー 6void main() 7{ 8 fragment = vfragColor; 9}