線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2859
推到 Plurk!
推到 Facebook!

請問OpenGL在BCB中要如何設置環境

尚未結案
黑輪
中階會員


發表:135
回覆:188
積分:64
註冊:2004-01-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-23 14:58:24 IP:140.124.xxx.xxx 未訂閱
之前有問過類似的問題,可以我只想要在BCB中可以使用OpenGL的函數,只有簡單簡的旋轉、放大、縮小等,不用使用3D引擎,在BCC中要如何設置、或引入什麼檔,才可以在BCC中使用OpenGL的函數呢? 萬分感謝各位的幫忙~這個問題困擾我好久了~
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-23 18:19:06 IP:211.76.xxx.xxx 未訂閱
黑輪 您好:    印象中BCB6似乎沒有OpenGL的範例,但BCB5中有,上傳供您參考。 或者您可以找一下,BCB6中的Examples看看。    http://delphi.ktop.com.tw/loadfile.php?TOPICID=18279526&CC=408814 RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
folkchen
高階會員


發表:9
回覆:232
積分:173
註冊:2003-10-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-25 08:42:31 IP:211.20.xxx.xxx 未訂閱
下面那是我以前玩 OPEN GL 時找到的網站,有些好久沒有上去了,不知還能不能進去 http://forum.folkchen.com/modules/newbb/viewtopic.php?viewmode=flat&topic_id=351&forum=28 其中的下面這個站的教學最有系統,且各程式語言的版本都有 只是BCB版是可以RUN,但是寫法還是VC的架構,若你真的會了OPENGL 可以自己再改寫成真正的BCB版 也有人把它翻成中文的,你可以找找上面連絡的其他站 http://nehe.gamedev.net/
黑輪
中階會員


發表:135
回覆:188
積分:64
註冊:2004-01-29

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-26 22:22:23 IP:61.228.xxx.xxx 未訂閱
folkchen朋友~可是我現在還不能在BCC中使用OpenGL,要使用OpenGL,好像要設定一些環境,我弄了好幾天~都搞不定~
folkchen
高階會員


發表:9
回覆:232
積分:173
註冊:2003-10-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-27 08:19:02 IP:211.20.xxx.xxx 未訂閱
我的電腦並沒有特別設定什麼耶 網路上下載來的程式碼直接就可以跑了 除了一些很舊的寫法有用到特殊的DLL 不然我裝了BCB6就可以用了,不記得有做過什麼設定
黑輪
中階會員


發表:135
回覆:188
積分:64
註冊:2004-01-29

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-27 15:57:43 IP:140.124.xxx.xxx 未訂閱
我看書上的範例~用出來了~可是我也不太懂~ 我把程式貼上來~懂的人可以解說一下嗎~ PS:舊的BCB的範例中,也有部份相同的程式碼~ 非常感謝哦~ 第一個Unit_OpenGL.cpp
 
//---------------------------------------------------------------------------    #include 
#pragma hdrstop    #include "Unit_OpenGL.h"    //---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::mmInitOpenGLClick(TObject *Sender)
{
  if(FglRC==NULL)
  {
    PIXELFORMATDESCRIPTOR pfd;
    FhDC=GetDC(Handle);
    pfd.nSize=sizeof(PIXELFORMATDESCRIPTOR);
    pfd.nVersion=1;
    pfd.iPixelType=PFD_TYPE_RGBA;
    pfd.dwFlags=PFD_DRAW_TO_WINDOW |
                PFD_SUPPORT_OPENGL |
                PFD_DOUBLEBUFFER;
    pfd.cColorBits=32;
    pfd.cDepthBits=24;
    int pixelFormat=ChoosePixelFormat(FhDC,&pfd);
    if(pixelFormat==0)
    {
      ShowMessage("像點格式選取失敗!!");
      return;
    }        int setPixelFmt=SetPixelFormat(FhDC,pixelFormat,&pfd);        if(setPixelFmt==false)
    {
      ShowMessage("像點格式設定失敗!!");
      return;
    }        FglRC=wglCreateContext(FhDC);
    wglMakeCurrent(FhDC,FglRC);        Label3->Caption=IntToStr((int)FhDC);
    Label4->Caption=IntToStr((int)FglRC);
    Label7->Caption=IntToStr(pixelFormat);
    if(setPixelFmt)
      Label8->Caption="true";
    else
      Label8->Caption="false";        glClearDepth(1.0);
    glEnable(GL_DEPTH_TEST);        glViewport(0,0,ClientWidth,ClientHeight);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    if(ClientHeight==0)
      gluPerspective(30,ClientHeight,1.0,100);
    else
      gluPerspective(30,ClientWidth/ClientHeight,1.0,100);
  }    }
//---------------------------------------------------------------------------
void __fastcall TForm1::mmDrawOpenGLClick(TObject *Sender)
{      if(FglRC==NULL)
  {
    mmInitOpenGLClick(Sender); //呼叫函數建立OpenGL的繒圖環境
  }      wglMakeCurrent(FhDC, FglRC);
  glClearColor(1.0, 1.0, 1.0, 1.0);
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);      glEnable(GL_DEPTH_TEST);
  glLineWidth(15);
  glPushMatrix();
  glTranslatef(0.0, 0.0, -40);
  glRotatef(20, 1.0, 0.0, 0.0);
  glBegin(GL_LINES);
  for(int lop=0; lop<12; lop  )
  {
    glColor3f(0.0, 0.0, 0.1);
    glVertex3f(0.0, 0.0, 0.0);
    glColor3f(1.0, lop/12, 0.2);
    float x = cos((M_PI/6)*lop);
    float y = sin((M_PI/6)*lop);
    glVertex2f(x*10, y*10);
  }
  glEnd();
  glPopMatrix();
  glFlush();
  SwapBuffers(FhDC);    }
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
  if(FglRC != NULL)
    wglDeleteContext(FglRC);      if(FhDC != NULL)
    ReleaseDC(Handle, FhDC);
}
//---------------------------------------------------------------------------
第二個 Unit_OpenGL.h
 
//---------------------------------------------------------------------------    #ifndef Unit_OpenGLH
#define Unit_OpenGLH
//---------------------------------------------------------------------------
#include 
#include 
#include 
#include <Forms.hpp>
#include 
#include 
#include 
#include <math.h>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:        // IDE-managed Components
        TMainMenu *MainMenu1;
        TMenuItem *mmInitOpenGL;
        TMenuItem *mmDrawOpenGL;
        TLabel *Label3;
        TLabel *Label1;
        TLabel *Label2;
        TLabel *Label4;
        TLabel *Label5;
        TLabel *Label7;
        TLabel *Label6;
        TLabel *Label8;
        void __fastcall mmInitOpenGLClick(TObject *Sender);
        void __fastcall mmDrawOpenGLClick(TObject *Sender);
        void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
private:        // User declarations
        HDC FhDC;
        HGLRC FglRC;    public:                // User declarations
        __fastcall TForm1(TComponent* Owner);    };
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif    
發表人 - 黑輪 於 2004/10/27 16:00:10
黑輪
中階會員


發表:135
回覆:188
積分:64
註冊:2004-01-29

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-04-01 05:59:22 IP:218.167.xxx.xxx 未訂閱
現在我使用一本書上附的OpenGL VCL解決問題了,可以正常的執行OpenGL~
系統時間:2024-11-21 22:14:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!