皮皮网
皮皮网

【强势回踩源码】【源码面试题】【2c源码】opengl vb源码

来源:浏览器源码 发表时间:2024-12-24 02:08:04

1.用vb 的OpenGL 在picture中画一个三角形。

opengl vb源码

用vb 的OpenGL 在picture中画一个三角形。

       è¦æƒ³åœ¨VB6.0中使用OpenGL绘图,必须先下载一个SDK,源码强势回踩源码名字叫vbogl.tlb。

       ä¸‹è½½è¯¥æ–‡ä»¶åŽï¼Œç›´æŽ¥åœ¨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 = '颜色位数

        pfd.cDepthBits = '位宽

        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

       åœ¨å·¥ç¨‹çš„FORM的load中加入调用代码

       Call EnableOpenGL(Picture1.hDC)

       3、与启用对应的禁用

       '禁用OGL

       Sub DisableOpenGL()

        wglMakeCurrent 0, 0

        wglDeleteContext hRC

       End Sub

       åœ¨å·¥ç¨‹çš„form的unload中加入禁用代码

       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 '三角形的3个顶点

        glVertex2f -0.5, 0.5

        glVertex2f 0.5, -0.5

        glEnd

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

        SwapBuffers Picture1.hDC '切换缓存

       End Sub

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

       Display

相关栏目:休闲