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

求代码... 求代码 展开
 我来答
lsk110
2010-08-23 · TA获得超过562个赞
知道大有可为答主
回答量:541
采纳率:0%
帮助的人:1014万
展开全部
  要想在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
  glVertex2f 0.5, -0.5
  glEnd
  glPopMatrix '依据当前模式(模式-视图矩阵)使矩阵出栈
  SwapBuffers Picture1.hDC '切换缓存
  End Sub

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

  Display
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式