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
[61661] Re:Re:Re:Re:안되는데요..=_=
머털이 [xmessiah] 1586 읽음    2010-06-23 14:27
누군가 님이 쓰신 글 :
: 가만보니 뭐가 빠졌군요
: Panel1->WindowProc = Panel1_NewProc;
:
: void __fastcall TFmDraw3D::Panel1_NewProc(Messages::TMessage &Message)
: {
: //여기서 WM_PAINT할때 DrawScene을 호출함.
: }
: 이런 형식으로 해야합니다.

감사합니다...
하지만 링크 에러가 나네요
void __fastcall TFmDraw3D::DrawScene(void)부분에서
    auxSolidSphere(100.0f);에서 링크에러가 납니다..
주석 처리하고 돌리면 돌아는 가는데 ... 여전히 패널에 반응은 없습니다.
ㅡㅜ



//---------------------------------------------------------------------------

#include <vcl.h>
#include <vcl/vcl.h>
#pragma hdrstop

#include "Draw3DForm.h"
#include <gl\gl.h>
#include <gl\glu.h>
#include <gl\glaux.h>
#include <float.h>
#include <math.h>
#define GL_PI 3.1415f

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFmDraw3D *FmDraw3D;
__fastcall TFmDraw3D::TFmDraw3D(TComponent* Owner)
    : TForm(Owner)
{

}
void __fastcall TFmDraw3D::FormCreate(TObject *Sender)
{
    GLInit();
}
//---------------------------------------------------------------------------
void __fastcall TFmDraw3D::GLInit(void)
{
  int pf;

  hDC = GetDC(Panel1->Handle);

  memset(&pfd, 0, sizeof(pfd));
  pfd.nSize        = sizeof(pfd);
  pfd.nVersion     = 1;
  pfd.dwFlags      = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
  pfd.iPixelType   = PFD_TYPE_RGBA;
  pfd.cDepthBits   = 16;
  pfd.cColorBits   = 32;        //true color

  pf = ChoosePixelFormat(hDC, &pfd);
  if (pf == 0) { MessageBox(NULL, "ChoosePixelFormat() failed: Cannot find a suitable pixel format.", "Error", MB_OK); return; }
  if (SetPixelFormat(hDC, pf, &pfd) == FALSE) {    MessageBox(NULL, "SetPixelFormat() failed: Cannot set format specified.", "Error", MB_OK); return; }
  DescribePixelFormat(hDC, pf, sizeof(PIXELFORMATDESCRIPTOR), &pfd);

  hRC = wglCreateContext(hDC);
  wglMakeCurrent(hDC, hRC);
  ReleaseDC(Handle, hDC);

  Panel1->WindowProc = Panel1_NewProc;


}
//---------------------------------------------------------------------------
void __fastcall TFmDraw3D::FormResize(TObject *Sender)
{
    static int nWidth, nHeight;
    static int nAspect;

    nWidth  = Panel1->Width;
    nHeight = Panel1->Height;

    glViewport(0.0, 0.0, nWidth, nHeight);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();


    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    if(nHeight == 0)        nHeight = 1;
    nAspect = nWidth / nHeight;

    gluPerspective(45.0f, nAspect, 1.0f, 200.0f);

    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);

}
//---------------------------------------------------------------------------
void __fastcall TFmDraw3D::PaintBox1Paint(TObject *Sender)
{
    DrawScene();
}
//---------------------------------------------------------------------------
void __fastcall TFmDraw3D::FormDestroy(TObject *Sender)
{
  wglMakeCurrent(hDC, NULL);
  wglDeleteContext(hRC);
}
//---------------------------------------------------------------------------

void __fastcall TFmDraw3D::DrawScene(void)
{
    //우선 지우고
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) ;

    //그림을 그린다.
    glColor3f(1.0f,0.0f,0.0f);
    glLoadIdentity();
    glTranslatef(0.0f, 0.0f, -100.0f);
    auxSolidSphere(100.0f);

    glBegin(GL_TRIANGLES);
        glColor3ub(255,0,0);
        glVertex3f( 0.0f, 1.0f, -10.0f);
        glColor3ub(0,255,0);
        glVertex3f(-1.0f,-1.0f, -10.0f);
        glColor3ub(0,0,255);
        glVertex3f( 1.0f,-1.0f, -10.0f);
    glEnd();

    glFlush();

    SwapBuffers(wglGetCurrentDC());
}
//---------------------------------------------------------------------------
void __fastcall TFmDraw3D::Panel1_NewProc(Messages::TMessage &Message)
{
    if(Message.Msg == WM_PAINT) DrawScene();
}

+ -

관련 글 리스트
61656 openGL 그림이 그려지질 않아요 머털이 1664 2010/06/23
61657     Re:openGL 그림이 그려지질 않아요 누군가 1278 2010/06/23
61658         Re:Re:안되는데요..=_= 머털이 1182 2010/06/23
61659             Re:Re:Re:안되는데요..=_= 누군가 1010 2010/06/23
61661                 Re:Re:Re:Re:안되는데요..=_= 머털이 1586 2010/06/23
61680                     검은 화면만 보입니다... 머털이 1261 2010/06/24
61704                         됩니다...소스첨부 ...고생하지마세요 패널은 OPENGL AP PANEL 썻습니다. 머털이 1903 2010/06/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.