用OpenGL显示列表写画三角形和直线的程序1
发布网友
发布时间:2023-10-16 15:26
我来回答
共1个回答
热心网友
时间:2024-10-28 16:41
要想在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 = 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
在工程的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