您的位置:首页 > 编程语言 > VB

正在准备写一个OpenGL的VB.Net程序

2006-11-02 17:26 423 查看
抄袭NEHE的例子,现在还不知道怎么实现,貌似比较复杂!

昨天晚上实现了2D的平面底图和3D物体的综合,感觉不错,就是效果差了一点。

下面这个是主要的Paint代码部分。


' 我自己的 OpenGL 代码。




PaintGL#Region "PaintGL"






Public Sub PaintGL()Sub PaintGL()


Gl.glClear(Gl.GL_COLOR_BUFFER_BIT + Gl.GL_DEPTH_BUFFER_BIT) ' Clear Screen And Depth Buffer




' 绘制背景图。


Gl.glMatrixMode(Gl.GL_PROJECTION)


Gl.glPushMatrix()


Gl.glLoadIdentity()


Gl.glOrtho(0, form.Width, 0, form.Height, -1, 1)


Gl.glMatrixMode(Gl.GL_MODELVIEW)


Gl.glPushMatrix()


Gl.glLoadIdentity()


Gl.glDepthMask(Gl.GL_FALSE)


Gl.glDisable(Gl.GL_DEPTH_TEST)


Gl.glDisable(Gl.GL_LIGHTING)




Gl.glEnable(Gl.GL_TEXTURE_2D)


Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture(1))


Gl.glColor3ub(255, 255, 255)


Gl.glBegin(Gl.GL_QUADS)


Gl.glTexCoord2i(0, 0)


Gl.glVertex2i(0, 0)


Gl.glTexCoord2i(1, 0)


Gl.glVertex2i(form.Width, 0)


Gl.glTexCoord2i(1, 1)


Gl.glVertex2i(form.Width, form.Height)


Gl.glTexCoord2i(0, 1)


Gl.glVertex2i(0, form.Height)


Gl.glEnd()


'Gl.glDisable(Gl.GL_TEXTURE_2D)




'Gl.glEnable(Gl.GL_LIGHTING)


Gl.glEnable(Gl.GL_DEPTH_TEST)


Gl.glDepthMask(Gl.GL_TRUE)


Gl.glMatrixMode(Gl.GL_PROJECTION)


Gl.glPopMatrix()


Gl.glMatrixMode(Gl.GL_MODELVIEW)


Gl.glPopMatrix()




Gl.glPushMatrix()


' 绘制矩形/立方体


Gl.glLoadIdentity()


Gl.glTranslatef(xOffset, yOffset, zoom)


' 旋转


Gl.glRotatef(xRot, 1, 0, 0)


Gl.glRotatef(yRot, 0, 1, 0)


Gl.glRotatef(zRot, 0, 0, 1)


' 绑定纹理


Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture(0))


Gl.glBegin(Gl.GL_QUADS)


' 顶面


'Gl.glColor3f(0.5, 0.5, 1.0): Gl.glTexCoord2f(0, 0)


Gl.glColor3f(1, 1, 1)


Gl.glVertex3f(1, 0.5, -0.02) ' : Gl.glTexCoord2f(1, 0)


Gl.glVertex3f(-1, 0.5, -0.02) 'Gl.glTexCoord2f(1, 1) :


Gl.glVertex3f(-1, 0.5, 0.02) 'Gl.glTexCoord2f(0, 1) :


Gl.glVertex3f(1, 0.5, 0.02) '


' 地面


'Gl.glColor3f(1.0, 0.5, 0.0) ' : Gl.glTexCoord2f(0, 0)


Gl.glVertex3f(1.0, -0.5, 0.02) ' Gl.glTexCoord2f(1, 0) :


Gl.glVertex3f(-1.0, -0.5, 0.02) ' Gl.glTexCoord2f(1, 1) :


Gl.glVertex3f(-1.0, -0.5, -0.02) ' Gl.glTexCoord2f(0, 1) :


Gl.glVertex3f(1.0, -0.5, -0.02)


' 正面


Gl.glColor3f(1.0, 1.0, 1.0)


Gl.glTexCoord2f(1, 1)


Gl.glVertex3f(1.0, 0.5, 0.02)


Gl.glTexCoord2f(0, 1)


Gl.glVertex3f(-1.0, 0.5, 0.02)


Gl.glTexCoord2f(0, 0)


Gl.glVertex3f(-1.0, -0.5, 0.02)


Gl.glTexCoord2f(1, 0)


Gl.glVertex3f(1.0, -0.5, 0.02)


' 后面


'Gl.glColor3f(1.0, 1.0, 1.0) ' Gl.glTexCoord2f(0, 0) :


Gl.glVertex3f(1.0, -0.5, -0.02) ' Gl.glTexCoord2f(1, 0) :


Gl.glVertex3f(-1.0, -0.5, -0.02) ' Gl.glTexCoord2f(1, 1) :


Gl.glVertex3f(-1.0, 0.5, -0.02) ' Gl.glTexCoord2f(0, 1) :


Gl.glVertex3f(1.0, 0.5, -0.02)


' 左侧面


'Gl.glColor3f(0.0, 0.0, 1.0) ' Gl.glTexCoord2f(0, 0) :


Gl.glVertex3f(-1.0, 0.5, 0.02) ' Gl.glTexCoord2f(1, 0) :


Gl.glVertex3f(-1.0, 0.5, -0.02) ' Gl.glTexCoord2f(1, 1) :


Gl.glVertex3f(-1.0, -0.5, -0.02) ' Gl.glTexCoord2f(0, 1) :


Gl.glVertex3f(-1.0, -0.5, 0.02)


' 右侧面


'Gl.glColor3f(1.0, 0.0, 1) ' Gl.glTexCoord2f(0, 0) :


Gl.glVertex3f(1.0, 0.5, -0.02) ' Gl.glTexCoord2f(1, 0) :


Gl.glVertex3f(1.0, 0.5, 0.02) ' Gl.glTexCoord2f(1, 1) :


Gl.glVertex3f(1.0, -0.5, 0.02) ' Gl.glTexCoord2f(0, 1) :


Gl.glVertex3f(1.0, -0.5, -0.02)




Gl.glEnd()


Gl.glPopMatrix()




rTri += 1.0


rQuad -= 0.5


End Sub




#End Region

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: