CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  非技术类

急!谁有OpenGL.ocx的控件啊?

楼主zklxcm(zklxcm)2003-06-03 09:48:10 在 VB / 非技术类 提问

我要用VB做三维显示,但是不知道那里有下载,谁能给我一个(zklxcm@sohu.com),或者有一个免费下载的地址也行。谢谢那位大虾了! 问题点数:99、回复次数:3Top

1 楼MarchRain(分离是痛苦,融合是幸福)回复于 2003-06-03 15:46:12 得分 30

我有,发过去了  
  引用opengl   com   libraryTop

2 楼online(龙卷风V4.0--决战江湖(MS MVP-VB))回复于 2003-06-03 15:56:45 得分 50

没有  
  这个控件  
   
  你可以直接使用opengl对象,比较方便  
  贴一段  
  Option   Explicit  
   
  '   Win32   stuff  
   
  Private   Type   PALETTEENTRY  
          peRed   As   Byte  
          peGreen   As   Byte  
          peBlue   As   Byte  
          peFlags   As   Byte  
  End   Type  
   
  Private   Type   LOGPALETTE  
          palVersion   As   Integer  
          palNumEntries   As   Integer  
          palPalEntry(0   To   255)   As   PALETTEENTRY  
  End   Type  
   
  Private   Type   PIXELFORMATDESCRIPTOR  
          nSize   As   Integer  
          nVersion   As   Integer  
          dwFlags   As   Long  
          iPixelType   As   Byte  
          cColorBits   As   Byte  
          cRedBits   As   Byte  
          cRedShift   As   Byte  
          cGreenBits   As   Byte  
          cGreenShift   As   Byte  
          cBlueBits   As   Byte  
          cBlueShift   As   Byte  
          cAlphaBits   As   Byte  
          cAlphaShift   As   Byte  
          cAccumBits   As   Byte  
          cAccumRedBits   As   Byte  
          cAccumGreenBits   As   Byte  
          cAccumBlueBits   As   Byte  
          cAccumAlpgaBits   As   Byte  
          cDepthBits   As   Byte  
          cStencilBits   As   Byte  
          cAuxBuffers   As   Byte  
          iLayerType   As   Byte  
          bReserved   As   Byte  
          dwLayerMask   As   Long  
          dwVisibleMask   As   Long  
          dwDamageMask   As   Long  
  End   Type  
   
  Const   PFD_TYPE_RGBA   =   0  
  Const   PFD_TYPE_COLORINDEX   =   1  
   
  Const   PFD_MAIN_PLANE   =   0  
   
  Const   PFD_DOUBLEBUFFER   =   1  
  Const   PFD_DRAW_TO_WINDOW   =   &H4  
  Const   PFD_SUPPORT_OPENGL   =   &H20  
  Const   PFD_NEED_PALETTE   =   &H80  
  Private   Declare   Function   ChoosePixelFormat   Lib   "gdi32"   (ByVal   hDC   As   Long,   pfd   As   PIXELFORMATDESCRIPTOR)   As   Long  
  Private   Declare   Function   CreatePalette   Lib   "gdi32"   (pPal   As   LOGPALETTE)   As   Long  
  Private   Declare   Sub   DeleteObject   Lib   "gdi32"   (hObject   As   Long)  
  Private   Declare   Sub   DescribePixelFormat   Lib   "gdi32"   (ByVal   hDC   As   Long,   ByVal   PixelFormat   As   Long,   ByVal   nBytes   As   Long,   pfd   As   PIXELFORMATDESCRIPTOR)  
  Private   Declare   Function   GetDC   Lib   "gdi32"   (ByVal   hWnd   As   Long)   As   Long  
  Private   Declare   Function   GetPixelFormat   Lib   "gdi32"   (ByVal   hDC   As   Long)   As   Long  
  Private   Declare   Sub   GetSystemPaletteEntries   Lib   "gdi32"   (ByVal   hDC   As   Long,   ByVal   start   As   Long,   ByVal   entries   As   Long,   ByVal   ptrEntries   As   Long)  
   
  Private   Declare   Sub   RealizePalette   Lib   "gdi32"   (ByVal   hPalette   As   Long)  
  Private   Declare   Sub   SelectPalette   Lib   "gdi32"   (ByVal   hDC   As   Long,   ByVal   hPalette   As   Long,   ByVal   bln   As   Long)  
   
  Private   Declare   Function   SetPixelFormat   Lib   "gdi32"   (ByVal   hDC   As   Long,   ByVal   i   As   Long,   pfd   As   PIXELFORMATDESCRIPTOR)   As   Boolean  
  Private   Declare   Sub   SwapBuffers   Lib   "gdi32"   (ByVal   hDC   As   Long)  
   
  Private   Declare   Function   wglCreateContext   Lib   "OpenGL32"   (ByVal   hDC   As   Long)   As   Long  
  Private   Declare   Sub   wglDeleteContext   Lib   "OpenGL32"   (ByVal   hContext   As   Long)  
  Private   Declare   Sub   wglMakeCurrent   Lib   "OpenGL32"   (ByVal   l1   As   Long,   ByVal   l2   As   Long)  
  Dim   hPalette   As   Long  
  Dim   hGLRC   As   Long  
   
  Sub   SetupPixelFormat(ByVal   hDC   As   Long)  
          Dim   pfd   As   PIXELFORMATDESCRIPTOR  
          Dim   PixelFormat   As   Integer  
          pfd.nSize   =   Len(pfd)  
          pfd.nVersion   =   1  
          pfd.dwFlags   =   PFD_SUPPORT_OPENGL   Or   PFD_DRAW_TO_WINDOW   Or   PFD_DOUBLEBUFFER   Or   PFD_TYPE_RGBA  
          pfd.iPixelType   =   PFD_TYPE_RGBA  
          pfd.cColorBits   =   16  
          pfd.cDepthBits   =   16  
          pfd.iLayerType   =   PFD_MAIN_PLANE  
          PixelFormat   =   ChoosePixelFormat(hDC,   pfd)  
          If   PixelFormat   =   0   Then  
                  MsgBox   "ChoosePixelFormat   failed"  
                  End  
          End   If  
          SetPixelFormat   hDC,   PixelFormat,   pfd  
  End   Sub  
   
  Sub   SetupPalette(ByVal   lhDC   As   Long)  
          Dim   PixelFormat   As   Long  
          Dim   pfd   As   PIXELFORMATDESCRIPTOR  
          Dim   pPal   As   LOGPALETTE  
          Dim   PaletteSize   As   Long  
          PixelFormat   =   GetPixelFormat(lhDC)  
          DescribePixelFormat   lhDC,   PixelFormat,   Len(pfd),   pfd  
          If   (pfd.dwFlags   And   PFD_NEED_PALETTE)   <>   0   Then  
                  PaletteSize   =   2   ^   pfd.cColorBits  
          Else  
                  Exit   Sub  
          End   If  
           
          pPal.palVersion   =   &H300  
          pPal.palNumEntries   =   PaletteSize  
          Dim   redMask   As   Long  
          Dim   GreenMask   As   Long  
          Dim   BlueMask   As   Long  
          Dim   i   As   Long  
          redMask   =   2   ^   pfd.cRedBits   -   1  
          GreenMask   =   2   ^   pfd.cGreenBits   -   1  
          BlueMask   =   2   ^   pfd.cBlueBits   -   1  
          For   i   =   0   To   PaletteSize   -   1  
                  With   pPal.palPalEntry(i)  
                          .peRed   =   i  
                          .peGreen   =   i  
                          .peBlue   =   i  
                          .peFlags   =   0  
                  End   With  
          Next  
          GetSystemPaletteEntries   hDC,   0,   256,   VarPtr(pPal.palPalEntry(0))  
          hPalette   =   CreatePalette(pPal)  
          If   hPalette   <>   0   Then  
                  SelectPalette   lhDC,   hPalette,   False  
                  RealizePalette   lhDC  
          End   If  
  End   Sub  
   
   
  Private   Sub   Form_Initialize()  
          Dim   hGLRC   As   Long  
          SetupPixelFormat   hDC  
          'SetupPalette   hDC  
          hGLRC   =   wglCreateContext(hDC)  
          wglMakeCurrent   hDC,   hGLRC  
          glMatrixMode   GL_PROJECTION  
          glFrustum   -0.5,   0.5,   -0.5,   0.5,   1,   3  
          glMatrixMode   GL_MODELVIEW  
          glTranslatef   0,   0,   -2  
          glRotatef   30,   1,   0,   0  
          glRotatef   30,   0,   1,   0  
          glEnable   GL_DEPTH_TEST  
          glEnable   GL_LIGHTING  
          glEnable   GL_LIGHT0  
          glEnable   GL_DITHER  
  End   Sub  
   
  Private   Sub   Form_Paint()  
          glClear   GL_COLOR_BUFFER_BIT   Or   GL_DEPTH_BUFFER_BIT  
          glBegin   GL_QUADS  
           
          glNormal3f   0,   0,   1  
          glVertex3f   0.5,   0.5,   0.5:   glVertex3f   -0.5,   0.5,   0.5  
          glVertex3f   0.5,   0.5,   0.5:   glVertex3f   -0.5,   0.5,   0.5  
   
          glNormal3f   0,   0,   -1  
          glVertex3f   -0.5,   -0.5,   -0.5:   glVertex3f   -0.5,   0.5,   -0.5  
          glVertex3f   0.5,   0.5,   -0.5:   glVertex3f   0.5,   -0.5,   -0.5  
   
          glNormal3f   0,   1,   0  
          glVertex3f   0.5,   0.5,   0.5:   glVertex3f   0.5,   0.5,   -0.5  
          glVertex3f   -0.5,   0.5,   -0.5:   glVertex3f   -0.5,   0.5,   0.5  
   
          glNormal3f   0,   -1,   0  
          glVertex3f   -0.5,   -0.5,   -0.5:   glVertex3f   0.5,   -0.5,   -0.5  
          glVertex3f   0.5,   -0.5,   0.5:   glVertex3f   -0.5,   -0.5,   0.5  
   
          glNormal3f   1,   0,   0  
          glVertex3f   0.5,   0.5,   0.5:   glVertex3f   0.5,   -0.5,   0.5  
          glVertex3f   0.5,   -0.5,   -0.5:   glVertex3f   0.5,   0.5,   -0.5  
   
          glNormal3f   -1,   0,   0  
          glVertex3f   -0.5,   -0.5,   -0.5:   glVertex3f   -0.5,   -0.5,   0.5  
          glVertex3f   -0.5,   0.5,   0.5:   glVertex3f   -0.5,   0.5,   -0.5  
           
          glEnd  
          SwapBuffers   hDC  
   
  End   Sub  
  Private   Sub   Form_Resize()  
          glViewport   0,   0,   Me.ScaleWidth,   Me.ScaleHeight  
  End   Sub  
  Private   Sub   Form_Unload(Cancel   As   Integer)  
          If   hGLRC   <>   0   Then  
                  wglMakeCurrent   0,   0  
                  wglDeleteContext   hGLRC  
          End   If  
          If   hPalette   <>   0   Then  
                  DeleteObject   hPalette  
          End   If  
  End   Sub  
  Private   Sub   Timer1_Timer()  
          '   Addition   to   the   original   source  
          glRotatef   5,   1,   0,   0  
          glRotatef   5,   0,   1,   0  
          Form_Paint  
  End   Sub  
  Top

3 楼MarchRain(分离是痛苦,融合是幸福)回复于 2003-06-06 09:32:14 得分 19

http://www.chinaspis.com/linrui/software.htm  
  《交互式三维图形软件开发工具Intra3D》  
  有源码,看看很有好处!Top

相关问题

  • 在OCX控件中怎样使用OCX控件?(加急)
  • 急:如何应用ocx控件??
  • mspaint 的 ocx 控件
  • 下载OCX控件
  • 怎么安装OCX控件啊?急急急!!!!
  • 关于OCX控件的加载问题,紧急求救!
  • 请问:我如何注册ocx控件?急!在线等待......
  • 急!关于OCX控件ImgScan扫描仪的困惑
  • OCX控件中怎样把打印功能加上?急
  • 急!!!!!如何注册AxtiveX控件的ocx文件?

关键词

  • opengl
  • ppal
  • palettesize
  • pfd
  • hglrc
  • as byte
  • palpalentry
  • hpalette
  • hdc
  • gl

得分解答快速导航

  • 帖主:zklxcm
  • MarchRain
  • online
  • MarchRain

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo