此代碼必須繪製兩條竇線。這裏通過着色器將兩條通常的線轉換成竇形線。我有一項任務需要旋轉其中的一個(例如45或90度),該怎麼做?下面如何旋轉圖像原始?我試圖使用glRotatef函數,但它沒有得到結果
void CMyApplication::OnDraw()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glUseProgramObjectARB(m_program);
glUniform1fARB(m_amplitudeUniformLocation, 0.3f);
glUniform1fARB(m_phaseUniformLocation, m_phase);
glUniform1fARB(m_frequencyUniformLocation, M_PI);
glUniform1fARB(m_colourUniformLocation, 0.0f);
//glUniform1fARB(m_rotateUniformLocation, true);
//glLoadIdentity();
//glRotatef(90.0f, 0.0f, 0.0f, 0.0f);
glBegin(GL_LINE_STRIP);
{
for (float x = -1; x <= 1.05; x += 0.01)
{
glVertex3f(x, 0, 0);
glColor3f(0, 0.5, -0.8);
}
}
glEnd();
//glLoadIdentity();
//glRotatef(-90.0f, 0.0f, 0.0f, 0.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glUniform1fARB(m_phaseUniformLocation, m_phase - 0.5);
glUniform1fARB(m_colourUniformLocation, 0.5f);
//glUniform1fARB(m_rotateUniformLocation, false);
glBegin(GL_LINE_STRIP);
{
for (float x = -1; x <= 1.05; x += 0.01)
{
glVertex3f(x, -0.5, 0);
glColor3f(0, -0.5, 0.8);
}
}
glEnd();
__glewMatrixRotatefEXT(GL_MODELVIEW, 45, 0, 0, 1); //THIS STRING HAS BEEN RESOLVED //MY PROBLEM
glUseProgramObjectARB(NULL);
glutSwapBuffers();
}
着色器:
uniform float phase;
uniform float amplitude;
uniform float frequency;
void main()
{
vec4 v = gl_Vertex;
v.y += amplitude * sin(frequency * v.x + phase);
gl_Position = gl_ModelViewProjectionMatrix * v;
gl_FrontColor = gl_Color;
}
Holy ['ARB_shader_objects'](http://www.opengl.org/registry/specs/ARB/shader_objects.txt)蝙蝠俠! – genpfault
您應該在包含着色器的[SSCCE](http://sscce.org/)中進行編輯。 – genpfault
OK.Is是否有任何功能來旋轉圖像?我試圖旋轉它,發送到着色glRotate函數,但編譯文件。看起來,這個函數與着色器語言不匹配 –