VB OpenGL绘图 -------我的第一个VB6.0 OpenGL程序

要想在VB6.0中使用OpenGL绘图,必须先下载一个SDK,名字叫vbogl.tlb。我用的版本是2.1,这个月要出3.0版本的了。

下载该文件后,直接在VB6.0“工程”-“引用里面引用

1、在form中加入一个PictureBox控件

2、要在Windows里面使用OpenGL,必须先进行像素格式设置,函数代码如下

 

Dim hRC     As Long’全局变量

 

   '启用OGL

Sub EnableOpenGL(ghDC As Long)

On Error GoTo Err

Dim pfd As PIXELFORMATDESCRIPTOR                'pfd像素格式设置.

    ZeroMemory pfd, Len(pfd)

    pfd.nSize = Len(pfd)                        '大小

    pfd.nVersion = 1                            '版本

    pfd.dwFlags = PFD_DRAW_TO_WINDOW Or PFD_SUPPORT_OPENGL Or PFD_DOUBLEBUFFER '标志

    pfd.iPixelType = PFD_TYPE_RGBA              '像素类型

    pfd.cColorBits = 24                         '颜色位数

    pfd.cDepthBits = 32                         '位宽

    pfd.iLayerType = PFD_MAIN_PLANE             '图层类型

   

    Dim PixFormat As Long

    PixFormat = ChoosePixelFormat(ghDC, pfd)    '选择设备中最匹配我们所设置的像素

    SetPixelFormat ghDC, PixFormat, pfd         '设置成当前的像素

    hRC = wglCreateContext(ghDC)                '建立翻译描述表

    wglMakeCurrent ghDC, hRC                    '将建立的翻译描述表设置为当前

     Exit Sub

Err:

MsgBox "Can't   create   OpenGL   context!", vbCritical, "Error"

          End

End Sub

在工程的FORMload中加入调用代码

Call EnableOpenGL(Picture1.hDC)

 

3、与启用对应的禁用

'禁用OGL

  Sub DisableOpenGL()

          wglMakeCurrent 0, 0

          wglDeleteContext hRC

  End Sub

在工程的formunload中加入禁用代码

Call DisableOpenGL

 

4、绘图

下例为红宝书第一个例子

 

  Private Sub Display()

 

          glClearColor 0#, 0#, 1#, 0#   '清空颜色缓存的RGBA颜色值

          glClear clrColorBufferBit     '为绘下帧曲面清除缓冲区

          glColor3f 0.8, 0.3, 0.5       '设置显示的字体颜色

         

          glPushMatrix                  '依据当前模式(模式-视图矩阵)使矩阵入栈

      

    

         glBegin glBeginModeConstants.bmPolygon '开始绘图,绘制一个四边形

                      glVertex2f -0.5, -0.5     '四边形的4个顶点

                      glVertex2f -0.5, 0.5

                      glVertex2f 0.5, 0.5

                      glVertex2f 0.5, -0.5

          glEnd

          glPopMatrix                           '依据当前模式(模式-视图矩阵)使矩阵出栈

          SwapBuffers Picture1.hDC             '切换缓存

       

  End Sub

5、在PictureBox1PAINT事件,调用显示的函数

Display

运行程序 ,得出的图像如下

 

 VB OpenGL绘图 -------我的第一个VB6.0 OpenGL程序_第1张图片

 

 

 

 

你可能感兴趣的:(VB,OpenGL绘图)