欢迎来到皮皮网官网

【源码时代公司】【网站成长记录源码】【慈善众筹源码】wglswapbuffers源码

时间:2024-11-26 21:10:38 来源:看dubbo源码心得

1.用vb 的OpenGL 在picture中画一个三角形。
2.如何获得wglswapbuffers

wglswapbuffers源码

用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

如何获得wglswapbuffers

       å¦‚何获得wglswapbuffers

       wglswapbuffers

       æ˜¯åŽ‚商驱动带来的

       ms opengl 1.1 中的source:

       __inline FARPROC GetAPI(char *szDll, char *szAPI, HMODULE *phDll)

       {

        *phDll = LoadLibraryA(szDll);

        if (*phDll == NULL)

        {

        return NULL;

        }

        return GetProcAddress(*phDll, szAPI);

       }

       /

copyright © 2016 powered by 皮皮网   sitemap