主题:会OpenGl的高手来帮帮我啊
用下面的代码画了一个三角形,可是显示不全,怎么办。
怎么可以改变显示的坐标系让所画的图形完整的显示在picture控件里
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
Private Sub Command1_Click()
Display
End Sub
Private Sub Form_Load()
Call EnableOpenGL(Picture1.hDC)
End Sub
Sub DisableOpenGL()
wglMakeCurrent 0, 0
wglDeleteContext hRC
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call DisableOpenGL
End Sub
Private Sub Display()
glClearColor 0#, 0#, 1#, 0# '清空颜色缓存的RGBA颜色值
glClear clrColorBufferBit '为绘下帧曲面清除缓冲区
glColor3f 0.8, 1.3, 1.4 '设置显示的字体颜色
glPushMatrix '依据当前模式(模式-视图矩阵)使矩阵入栈
glBegin glBeginModeConstants.bmPolygon '开始绘图,绘制一个三角形
glVertex2f -0.5, -0.5 '三角形的3个顶点
glVertex2f -0.5, 0.5
glVertex2f 2.5, -0.5
glEnd
glPopMatrix '依据当前模式(模式-视图矩阵)使矩阵出栈
SwapBuffers Picture1.hDC '切换缓存
End Sub
怎么可以改变显示的坐标系让所画的图形完整的显示在picture控件里
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
Private Sub Command1_Click()
Display
End Sub
Private Sub Form_Load()
Call EnableOpenGL(Picture1.hDC)
End Sub
Sub DisableOpenGL()
wglMakeCurrent 0, 0
wglDeleteContext hRC
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call DisableOpenGL
End Sub
Private Sub Display()
glClearColor 0#, 0#, 1#, 0# '清空颜色缓存的RGBA颜色值
glClear clrColorBufferBit '为绘下帧曲面清除缓冲区
glColor3f 0.8, 1.3, 1.4 '设置显示的字体颜色
glPushMatrix '依据当前模式(模式-视图矩阵)使矩阵入栈
glBegin glBeginModeConstants.bmPolygon '开始绘图,绘制一个三角形
glVertex2f -0.5, -0.5 '三角形的3个顶点
glVertex2f -0.5, 0.5
glVertex2f 2.5, -0.5
glEnd
glPopMatrix '依据当前模式(模式-视图矩阵)使矩阵出栈
SwapBuffers Picture1.hDC '切换缓存
End Sub