Uniformブロックのレイアウトに関する例題です.この例題はデータの保存形式について確認することが目的なので画面出力はありません.
sb05ex.cpp (sb05e1.vs; sb05e2.vs)
以下はこの例題で積んだ経験です.
-
glGetUniform...(rendering_program, ...)
を利用するときは事前にglUseProgram(rendering_program)
しておかないと正しいパラメタ値を読み込むことができない. -
glGetUniform...
は古典的な API.本来は OpenGL 4.3 以降で提供されているGL_ARB_program_interface_query
を利用すべきだが,Yosemite では利用できない.GL_ARB_program_interface_query
については Shading Language Cookbook (sbter 1 Getting started with GLSL, Getting a list of active vertex input attributes and locations) に解説がある. -
Uniform block のシェーダにおける保存形式の違いについて,
std140
レイアウトとshared
レイアウトを比較した.でも,手元の機種ではいずれも実質的にレイアウトの違いはないようだ.なんかおかしくないか?-
Intel HD Graphics 3000 (MacBook Air 11-in, Mid 2011)
-
Intel Iris (MacBook Pro, Retina, 13-in, Late 2013)
-
AMD Radeon R9 M295X (iMac5K, 27-in, Late 2014)
-