|
opengl 콤포넌트를 받아서 폼에 올리고 셈플 파일의 일부를 그대로 가지고 와서 조금 수정한뒤
컴파일 하면 정상적으로 작동 합니다. (화면에 정육면체가 나오는 거거든요)
그런데 내가 만든 함수에서 그리면 화면에 나오지를 않아요.
void __fastcall TForm1::openglpaint(TObject *Sender)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslated(0.0, 0.0, -5.0);
glRotatef(RotX, 1.0, 0.0, 0.0);
glRotatef(RotY, 0.0, 1.0, 0.0);
glRotatef(RotZ, 0.0, 0.0, 1.0);
glBegin(GL_POLYGON);
glColor3f(0.0,0.0,1.0);
glVertex3f( 1.0, 1.0, 1.0);
glVertex3f( -1.0, 1.0, 1.0);
glVertex3f( -1.0, -1.0, 1.0);
glVertex3f( 1.0, -1.0, 1.0);
glEnd();
.
.
.
glPopMatrix();
}
이렇게 판넬 이벤트를 만들어서 그속에서 그리면 나오는데요,
void Cta_maindraw(void)
{
.
.
.
}
이렇게 내가 함수를 만들어서 내용을 똑같이 코딩해도 되지를 않아요.
코맨드 버튼을 누르면 내가 만든 함수를 호출해서 화면에 그려지게 하려고 그러그던요..
물론 판넬 이벤트 함수속에서 그리면 프로그램 실행과 동시에 그려져서 나옵니다.
누가 아시는 분 좀 도와 주세요...
참고로 openGL판넬 콤포넌트는 이곳의 C++builder -> Components 에 195번(박정모님) 을
다운 받아서 사용 했고요
판넬 초기화 함수는 아래와 같습니다.
void __fastcall TForm1::openglinit(TObject *Sender)
{
glViewport(0,0,(GLsizei)OpenGLPanel1->Width,(GLsizei)OpenGLPanel1->Height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if ( OpenGLPanel1->Height==0)
gluPerspective(45, (GLdouble)OpenGLPanel1->Width, 1.0, 2000.0);
else
gluPerspective(45, (GLdouble)OpenGLPanel1->Width/
(GLdouble)OpenGLPanel1->Height,1.0, 2000.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glEnable(GL_DEPTH_TEST);
glClearColor(0.0,0.0,0.0,1.0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::openglresize(TObject *Sender)
{
glViewport(0,0,(GLsizei)OpenGLPanel1->Width,(GLsizei)OpenGLPanel1->Height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if ( OpenGLPanel1->Height==0)
gluPerspective(45, (GLdouble)OpenGLPanel1->Width, 1.0, 2000.0);
else
gluPerspective(45, (GLdouble)OpenGLPanel1->Width/
(GLdouble)OpenGLPanel1->Height,1.0, 2000.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
|