用OpenGL显示列表写画三角形和直线的程序

一排过去是三个三角形和一条直线,颜色为红
2024-12-25 21:38:30
推荐回答(1个)
回答1:

要想在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