質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

GLSL

GLSL (OpenGL Shading Language) はC言語をベースとしたシェーディング言語です。

Q&A

解決済

1回答

1072閲覧

シェーダー frag vertがわからない

txty

総合スコア298

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

GLSL

GLSL (OpenGL Shading Language) はC言語をベースとしたシェーディング言語です。

0グッド

0クリップ

投稿2020/10/19 07:29

編集2024/01/02 02:41

全体的に文を変更しました。

opengl

1 2class Shader 3{ 4 5public: 6Shader(); 7 ~Shader(); 8bool Load(const std::string& vertName, 9 const std::string& fragName); 10 void SetActive(); 11void Unload(); 12 private: 13 bool CompileShader(const std::string& fileName, 14 GLenum shaderType,GLuint& outShader); 15 16 bool IsCompiled(GLuint shader); 17 bool IsValidProgram(); 18 19 GLuint mVertexShader; 20 GLuint mFragShader; 21 GLuint mShaderProgram; 22 23}; 24 25 26bool Shader:: IsCompiled(GLuint shader){ 27 28GLint status; 29glGetShaderiv(shader,GL_COMPILE_STATUS, &status); 30 if(status !=GL_TRUE) 31 { 32 33 char buffer[512]; 34 memset(buffer,0,512); 35 glGetShaderInfoLog(shader,511,NULL,buffer); 36 printf("GLSLのコンパイルが失敗しました:\n%s",buffer); 37 return false; 38 } 39 return true; 40} 41 42 43bool Shader::Load(const std::string& vertName, 44 const std::string& fragName){ 45 46CompileShader(vertName,GL_VERTEX_SHADER,mVertexShader); 47CompileShader(fragName,GL_FRAGMENT_SHADER,mFragShader); 48 49mShaderProgram=glCreateProgram(); 50glAttachShader(mShaderProgram,mVertexShader); 51glAttachShader(mShaderProgram,mFragShader); 52glLinkProgram(mShaderProgram); 53 54return true;} 55 56 57 58 59bool Shader::CompileShader(const std::string& fileName, 60 GLenum shaderType,GLuint& outShader) 61{ 62std::ifstream shaderFile(fileName); 63 64 if(shaderFile.is_open()) 65 { 66 std::stringstream sstream; 67 68 sstream << shaderFile.rdbuf(); 69 std::string contents=sstream.str(); 70 71 const char *contentsChar=contents.c_str(); 72 73 outShader=glCreateShader(shaderType); 74 75 glShaderSource(outShader,1,&(contentsChar),NULL); 76 glCompileShader(outShader); 77 if(!IsCompiled (outShader)) 78 { 79 return false; 80 } 81 } 82 else 83 { 84return false; 85 } 86return true; 87} 88 89 90 91void Shader::SetActive(){ 92 93 glUseProgram(mShaderProgram); 94 95} 96 97 98 99void Shader::Unload(){ 100glDeleteProgram(mShaderProgram); 101glDeleteShader(mVertexShader); 102 glDeleteShader(mFragShader); 103} 104```opengl 105 106 107Building in directory: /home/hide/Desktop/foobar_xfile 2 (5 番目のコピー) 108make 109make all-recursive 110make[1]: ディレクトリ `/home/hide/Desktop/foobar_xfile 2 (5 番目のコピー)' に入ります 111Making all in src 112make[2]: ディレクトリ `/home/hide/Desktop/foobar_xfile 2 (5 番目のコピー)/src' に入ります 113CXX main.o 114main.cc: メンバ関数 ‘bool Shader::CompileShader(const string&, GLenum, GLuint&)’ 内: 115/home/hide/Desktop/foobar_xfile 2 (5 番目のコピー)/main.cc:82:34: エラー: no matching function for call to ‘std::basic_ifstream<char>::basic_ifstream(const string&)’ 116std::ifstream shaderFile(fileName); 117^ 118/home/hide/Desktop/foobar_xfile 2 (5 番目のコピー)/main.cc:82:34: 備考: 候補: 119In file included from /home/hide/Desktop/foobar_xfile 2 (5 番目のコピー)/main.cc:17:0: 120/usr/include/c++/4.8.2/fstream:467:7: 備考: std::basic_ifstream<_CharT, _Traits>::basic_ifstream(const char*, std::ios_base::openmode) [with _CharT = char; _Traits = std::char_traits<char>; std::ios_base::openmode = std::_Ios_Openmode] 121basic_ifstream(const char* __s, ios_base::openmode __mode = ios_base::in) 122^ 123/usr/include/c++/4.8.2/fstream:467:7: 備考: 第 1 引数を ‘const string {aka const std::basic_string<char>}’ から ‘const char*’ へ変換する方法が不明です 124/usr/include/c++/4.8.2/fstream:453:7: 備考: std::basic_ifstream<_CharT, _Traits>::basic_ifstream() [with _CharT = char; _Traits = std::char_traits<char>] 125basic_ifstream() : __istream_type(), _M_filebuf() 126^ 127/usr/include/c++/4.8.2/fstream:453:7: 備考: 候補では 0 個の引数が予期されますが、1 個の引数が与えられています 128/usr/include/c++/4.8.2/fstream:427:11: 備考: std::basic_ifstream<char>::basic_ifstream(const std::basic_ifstream<char>&) 129class basic_ifstream : public basic_istream<_CharT, _Traits> 130^ 131/usr/include/c++/4.8.2/fstream:427:11: 備考: 第 1 引数を ‘const string {aka const std::basic_string<char>}’ から ‘const std::basic_ifstream<char>&’ へ変換する方法が不明です 132make[2]: *** [main.o] エラー 1 133make[2]: ディレクトリ `/home/hide/Desktop/foobar_xfile 2 (5 番目のコピー)/src' から出ます 134make[1]: *** [all-recursive] エラー 1 135make: *** [all] エラー 2 136make[1]: ディレクトリ `/home/hide/Desktop/foobar_xfile 2 (5 番目のコピー)' から出ます 137完了しました (失敗です) 138所要時間: 3秒 139

opengl

1 2class Shader *mSpriteShader=new Shader(); 3 4 mSpriteShader->Load("./src/GL_ARRAY_BUFFER.vert","./src/GL_ARRAY_BUFFER.frag"); 5 6 mSpriteShader->SetActive(); 7 8```opengl 9 10追記 ● Glewはいれてみました。エラー内容が読めないです。これはどういったエラーでしょうか。 11

シェーダーのリンクなのですが、とある人が数字と文字を画面に出すようなシェーダーをつくっていました。
で自分もその結果が使いたくシェーダの本を手にとってみましたが、コードのエラーが直せません。どこがちがうのでしょうか。
使用した本 ゲームプログラミング c++ //私が提示したコードは同じです。悩んでも仕方ないから回答依頼だすよ

なんかエラーでるかもしれないけどここが参考になった。まだ途中ですけど。
.vertと.fragは読み込んだけど、VAOとVBOって何

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

質問を読んでいると複数の質問があるように見えるので、次からは1つずつ質問して下さい。

エラーしたコードが直せません。

エラーの内容はどれも同じで、

'gl*********' was not declared in this scope //直訳 : gi********* はこのスコープでは宣言されませんでした。

その本の目次を見る限り、GLEWを利用されているようなので、GLEWにその関数があるかお調べ下さい。
もしくはヘッダーのインクルード忘れです。

VAOとVBOって何

Vertex Array ObjectVertex Buffer Objectの略ですね。
こちらに詳しい説明が載っていますので、参考にどうぞ。

投稿2020/10/22 00:38

stdio

総合スコア3307

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

txty

2020/10/22 03:02

とりあえず、GLEWいれて再度やってみます。Vertex Array Objectや Vertex Buffer Object 承知しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問