C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[26035] 고수님 도와주세요...
이기봉 [leegbo95] 956 읽음    2003-06-21 09:51
아래와 같이 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();
}


+ -

관련 글 리스트
26035 고수님 도와주세요... 이기봉 956 2003/06/21
32645     Re:고수님 도와주세요... 김성철.마법사 730 2003/06/23
32644     Re:고수님 도와주세요... 김성철.마법사 737 2003/06/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.