私は多くのオンライン記事を閲覧しており、照明を追加することは非常にストレートなようですが、私は結果を得ることができません。私はOpenGL 3.0を使用しています。私はアニメーションモデルに頂点とフラグメントシェーダを使用しています。 Btw、私はOpenGLを初めて使う人です。フラグメント/頂点シェーダと一緒に固定されたglEnable(GL_LIGHTING)を使用できますか?
照明を無視して、私は環境の周りを走る3Dチャーですべてうまく動作しています。
glPushMatrix();
Vector3 pos = getPosition();
glTranslatef(pos.x, pos.y, pos.z);
glBindTexture(GL_TEXTURE_2D, m_beastTextureID);
static float modelviewMatrix[16];
static float projectionMatrix[16];
glGetFloatv(GL_MODELVIEW_MATRIX, modelviewMatrix);
glGetFloatv(GL_PROJECTION_MATRIX, projectionMatrix);
m_shaderProgram->bindShader();
m_shaderProgram->sendUniform4x4("modelview_matrix", modelviewMatrix);
m_shaderProgram->sendUniform4x4("projection_matrix", projectionMatrix);
m_shaderProgram->sendUniformTexture("texture0", 0);
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
glBindBuffer(GL_ARRAY_BUFFER, m_vertexBuffer);
glVertexAttribPointer((GLint)0, 3, GL_FLOAT, GL_FALSE, 0, 0);
glBindBuffer(GL_ARRAY_BUFFER, m_texCoordBuffer);
glVertexAttribPointer((GLint)1, 2, GL_FLOAT, GL_FALSE, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, m_interpolatedFrame.vertices.size());
glDisableVertexAttribArray(1);
glDisableVertexAttribArray(0);
glPopMatrix();
は、私はちょうど私のモデルにいくつかの方向性照明を取得する簡単な方法をしたい:ここ
glEnable(GL_DEPTH_TEST);
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
*snip*
glEnable(GL_LIGHTING);
glEnable (GL_LIGHT0);
float ambientLight0[] = { 0.2f, 0.2f, 0.2f, 1.0f };
float diffuseLight0[] = { 0.8f, 0.8f, 0.8f, 1.0f };
float specularLight0[] = { 0.5f, 0.5f, 0.5f, 1.0f };
float position0[] = { -2.5f, 1.0f, -1.0f, 1.0f };
glLightfv(GL_LIGHT0, GL_AMBIENT, ambientLight0);
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseLight0);
glLightfv(GL_LIGHT0, GL_SPECULAR, specularLight0);
glLightfv(GL_LIGHT0, GL_POSITION, position0);
//glEnable(GL_COLOR_MATERIAL);
//float mcolor[] = { 1.0f, 0.0f, 0.0f, 1.0f };
//glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, mcolor);
m_Beast.onRender();
はm_Beast.onRender()がどのように見えるかです。私はこの時点でライティングシェーダを書くのは面白くありません。
ありがとうございます。私はシェイダーで照明に飛び込むことしかできないと思う。たぶん誰かが良いチュートリアルの提案をしていますか? – Wollan
@Wollan:Check http://www.lighthouse3d.com/ – datenwolf
@Wollan:「Phong」シェーディングモデルを実装することをお勧めします。あなたはそのWPページを確認することができ、どこにでもチュートリアルがあります。 – Tuxer