|
아래와 같이 Opengl에서 OpenGLPanel1을 이용하여 정육면체을 그린후 그것을 이용하여 두개의 상자을 만들었 습니다.
실행 후 각 상자를 클릭 했을때 ShowMessage를 이용하여 '첫번째 상자' '두번째 상자' 문구가 나타나도록 만들려고 합니다.
도와주세요
정육면체를 그린다.
void __fastcall TForm1::Draw_Box(float xPos,float yPos,float zPos)
{
glPushMatrix();
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
glTranslatef(xPos,yPos,zPos);
glBegin(GL_POLYGON);
glEnable(GL_BLEND);
glColor4f(0.5f, 0.6f, 0.5f, 0.3f);
glVertex3f(0.0f, 0.0f, 0.0f); // top face
glVertex3f(0.0f, 0.0f, -1.0f);
glVertex3f(-1.0f, 0.0f, -1.0f);
glVertex3f(-1.0f, 0.0f, 0.0f);
glEnd();
glBegin(GL_POLYGON);
glEnable(GL_BLEND);
glColor4f(0.7f, 0.7f, 0.7f, 0.3f);
glVertex3f(0.0f, 0.0f, 0.0f); // front face
glVertex3f(-1.0f, 0.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 0.0f);
glVertex3f(0.0f, -1.0f, 0.0f);
glEnd();
glBegin(GL_POLYGON);
glEnable(GL_BLEND);
glColor4f(0.5f, 0.6f, 0.4f, 0.3f);
glVertex3f(0.0f, 0.0f, 0.0f); // right face
glVertex3f(0.0f, -1.0f, 0.0f);
glVertex3f(0.0f, -1.0f, -1.0f);
glVertex3f(0.0f, 0.0f, -1.0f);
glEnd();
glBegin(GL_POLYGON);
glEnable(GL_BLEND);
glColor4f(0.5f, 0.6f, 0.4f, 0.3f);
glVertex3f(-1.0f, 0.0f, 0.0f); // left face
glVertex3f(-1.0f, 0.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, 0.0f);
glEnd();
glBegin(GL_POLYGON);
glEnable(GL_BLEND);
glColor4f(0.5f, 0.6f, 0.5f, 0.3f);
glVertex3f(0.0f, -1.0f, 0.0f); // bottom face
glVertex3f(0.0f, -1.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, 0.0f);
glEnd();
glBegin(GL_POLYGON);
glEnable(GL_BLEND);
glColor4f(0.8f, 0.8f, 0.8f, 0.5f);
glVertex3f(0.0f, 0.0f, -1.0f); // back face
glVertex3f(-1.0f, 0.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, -1.0f);
glVertex3f(0.0f, -1.0f, -1.0f);
glEnd();
glPopMatrix();
}
위에서 그려진 육면체를 이용하여 두개의 상자을 그린다.
void __fastcall TForm1::OpenGLPanel1Paint(TObject *Sender)
{
glPushMatrix(); //첫번째 상자
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
glColor4f(0.5f, 0.5f, 0.5f, 0.3f);
glScalef(0.26f,0.10f,0.26f);
Draw_Box(0.5f,0.48f,0.5f);
glPopMatrix();
glPushMatrix(); //두번째 상자
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
glColor4f(0.5f, 0.5f, 0.5f, 0.3f);
glScalef(0.26f,0.10f,0.26f);
Draw_Box(0.0f,0.0f,0.0f);
glPopMatrix();
}
|