CDR6275

Michio SHIRAISHI Official Site


OpenGL 4.1とOpenGL ES SL 1.0で学ぶ3次元コンピュータグラフィックス

東邦大学理学部情報科学科 白石路雄
最終更新: 2014年2月20日

2. 最初のプログラム

 この章では三角形をウィンドウに表示するプログラムを通して、基本的な部分について説明します。

2.3 シェーダコードをファイルから読み込む

 前回で、基本的な図形を描くプログラムをやりましたが、ちょっと不便なところがあります。それは「シェーダのコードをプログラムの中に埋め込んである」点です。いかんせん読みにくいですよね。できれば、シェーダのファイルを別に作成しておいて、それを読み込むようにしておくのがベターです。ということで、次のようなやりかたが考えられます。

  const GLchar* vertexShaderFilePath = "../../../src/shaders/first.vs";
  std::ifstream ifs;
  ifs.open(vertexShaderFilePath, std::ifstream::binary);
  if(ifs.fail()){
    std::cerr << "File '" << vertexShaderFilePath << "' does not exist." << std::endl;
    return false;
  }
  ifs.seekg(0, std::ios::end);
  long long length = ifs.tellg();
  GLchar* vertexShaderCode = new GLchar[length+1];
  ifs.seekg(0, std::ios::beg);
  ifs.read(vertexShaderCode, length);
  vertexShaderCode[length] = NULL;
  ifs.close();
#version 100
attribute vec3 vertexCoordinate;
void main(){
  gl_Position = vec4(vertexCoordinate, 1.0);
}

 こんなことをするとfirst.vsというファイルからコードを読み出すことができるようになります。