VB.net可以开发小型3D图形显示软件吗?可以借助DirectX来编程 。免费3D引擎可不好找 , 一般来说速度比不上硬件加速后南京vb.net开发的DX,尤其令人头疼的是一般都没有针对VB的文档,LZ有这方面理想的话,自己写一个吧……
南京vb.net开发我不得不承认在VB上写DirectX的教程相当难找!如果LZ想深入研究三维图形问题,C一定要学,就算不能用C编程 , 起码要能把C程序翻译成VB程序 。
我自己学会DX编程花了两三个月(很浅) 。编这样一个程序难度是有点大的 。
工具:DirectX9和其针对VB的库(项目-添加引用 。.NET库里DX库一般都有),VB不知道现在支不支持DX10以上的版本 , 不过9绝对够用了 。
思路:一切3D图形都是由三角形拼成的 。矩形挖掉一个圆孔可不是一个方便画的图形,我估计至少得有24个三角形 。南京vb.net开发你需要记录这些点的坐标,或者干脆把它们写在文件里,到时读出来 。
这是我的一个老DX程序的不完全的代码(显示一个黑乎乎的平面),不一定能编译,可以参考一下 。
Imports Microsoft.DirectX '一定要~
Public Class FormMain
'Direct3D Startup
Dim d3dpp As New Direct3D.PresentParameters 'DX基本参数,例如全屏还是窗口等
Public MyDevice As Direct3D.Device ‘DX基本设备,画图就靠它 。
'Matrices
Dim matWorld, matView, matProj As Matrix '世界位置矩阵 , 摄像机位置矩阵和透视矩阵 , 数学要学好啊 。
'mesh
Public MyPlane as Direct3D.Mesh ’我们的物体
Public VBPlane(3) As Direct3D.CustomVertex.PositionNormalTextured '存放顶点位置的数组
#Region "DX Core"
Public Sub InitDeviceObjects()
With d3dpp ‘以下请照抄 。
.Windowed = True ‘不全屏 。
.SwapEffect = Direct3D.SwapEffect.Discard ’双缓冲交换效果 。请百度“双缓冲”
.BackBufferFormat = Direct3D.Format.Unknown
.EnableAutoDepthStencil = True ’让DX自动管理深度缓冲
.AutoDepthStencilFormat = Direct3D.DepthFormat.D16
End With
MyDevice = New Direct3D.Device(0, Direct3D.DeviceType.Hardware, Me.Handle, Direct3D.CreateFlags.HardwareVertexProcessing, d3dpp) '创建DX设备啦!以下两句请照抄 。
MyDevice.SetRenderState(Direct3D.RenderStates.ZEnable, True) ‘Z缓冲
MyDevice.SetRenderState(Direct3D.RenderStates.NormalizeNormals, True)'法线归一化,请看相关数学书籍 。
End Sub
Public Sub RestoreDeviceObjects()
Dim PlaneIB() As Short = {0, 1, 3, 0, 2, 3} ’顶点索引信息 。
Dim AttrTable(1) As Direct3D.AttributeRange ‘顶点分组属性表
AttrTable(0).AttributeId = 0
AttrTable(0).FaceStart = 0
AttrTable(0).FaceCount = 2 ’有两个三角形
AttrTable(0).VertexStart = 0
AttrTable(0).VertexCount = 4 ‘四个点
‘顶点坐标信息 。
VBPlane(0) = New Direct3D.CustomVertex.PositionNormalTextured(-500, -500, 0, 0, 0, 1, 0, 0)
VBPlane(1) = New Direct3D.CustomVertex.PositionNormalTextured(500, -500, 0, 0, 0, 1, 1, 0)
VBPlane(2) = New Direct3D.CustomVertex.PositionNormalTextured(-500, 500, 0, 0, 0, 1, 0, 1)
VBPlane(3) = New Direct3D.CustomVertex.PositionNormalTextured(500, 500, 0, 0, 0, 1, 1, 1)
MyPlane = New Direct3D.Mesh(2, 4, Direct3D.MeshFlags.Managed, Direct3D.VertexFormats.PositionDirect3D.VertexFormats.NormalDirect3D.VertexFormats.Texture1, MyDevice) ’创建物体
MyPlane.SetVertexBufferData(VBPlane, Direct3D.LockFlags.None) ‘输入顶点坐标数据
MyPlane.SetIndexBufferData(PlaneIB, Direct3D.LockFlags.None) ‘输入索引数据
MyPlane.SetAttributeTable(AttrTable) ‘输入顶点分组属性表
End Sub
Public Sub Render() ‘调用它画图
Dim vlook As New Vector3(1, 0, 0)
Dim vPos As New Vector3(0,0,0)
Dim vUp As New Vector3(0, 0, 1)
MatView = Matrix.LookAtLH(vPos, vlook, vUp) ‘计算摄像机位置矩阵
Device.SetTransform(Direct3D.TransformType.View, MatView) ‘设置当前摄像机位置矩阵为MatView 。
Dim fAspect As Single = Me.Width / Me.Height ’窗口长宽比
matProj = Matrix.PerspectiveFovLH(Math.PI / 4, fAspect, 1.0F, 10001) ‘计算透视矩阵MatProj 。
MyDevice.SetTransform(Direct3D.TransformType.Projection, matProj) ‘设置当前透视矩阵为MatProj 。
MyDevice.Clear(Direct3D.ClearFlags.TargetDirect3D.ClearFlags.ZBuffer, Color.Blue, 1.0F, 0) ’先刷蓝屏
MyDevice.BeginScene() ‘开始画
MatWorld = Matrix.Identity ’物体位于原点,不旋转
Device.SetTransform(Direct3D.TransformType.World, MatWorld) ’设置物体位置
Me.Mesh.DrawSubset(0) ‘画物体
MyDevice.EndScene() ’结束
MyDevice.Present() ‘显示在屏幕上
End Sub
Public Sub DeleteDeviceObjects() ’结束程序时放掉资源
MyPlane.Dispose()
MyDevice.Dispose()
End Sub
#End Region
Private Sub FormMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
DeleteDeviceObjects()
Windows.Forms.Cursor.Show()
End Sub
Private Sub FormMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
InitDeviceObjects()
RestoreDeviceObjects()
Windows.Forms.Cursor.Hide()
Render()
End Sub
End Class
使用VB.net开发环境开发软件 , 能够仍用VB编写程序?是否支持可以南京vb.net开发,比如说你可以这样: 主程序VB编写南京vb.net开发,核心DLL用VB.NET编写 , 这是没有问题的 。
麻烦采纳,谢谢!
开发一个VB.NET程序,要经过几个步骤不好说,我就说下我南京vb.net开发的想法南京vb.net开发!有数据库南京vb.net开发的!
1:先想清楚,(包括先设想下页面,涉及的功能等)
2:编写文档
3:设计数据库,编写代码
4:
调试程序
, 生成,查错
5:部署安装 。
如何用vb.net开发游戏?如何控制人物移动?我只会控制图片移动 。单纯用.net南京vb.net开发的技术来做非常麻烦 , 涉及到南京vb.net开发了大量南京vb.net开发的GUI绘图工作,但这个偏偏还是基础 。所以建议用WPF来处理,虽然也比较麻烦 , 但要比GUI容易理解的多 。
而原理实际上都是一样的 。本质上都是图片的移动 。只不过移动的那张图片有变化 。
譬如南京vb.net开发你要做一个沿直线跑步的小人 。在起始的位置画一个站立的人物图,然后将图片移动到下一个位置 , 并把图片换成迈出左腿并挥臂的图;再将图片移动一下,绘制收左腿迈右腿的图,一直下去 。
说白了就是南京vb.net开发你需要将人物移动的动作分解,并在合适的位置上绘制出合适的图,分解的越细 , 动画的连贯性就越高 。
其实就是制作动画,然后再把它用到游戏中
【南京vb.net开发 南京java开发公司】南京vb.net开发的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于南京java开发公司、南京vb.net开发的信息别忘了在本站进行查找喔 。
推荐阅读
- 禁用jquery失去焦点事件,jquery 失去焦点
- 莆田市小程序开发公司,莆田微信公众号开发公司
- 视频号小店能挂链接吗,视频号怎么带小店链接
- php查询数据库的代码 php查询数据库的代码怎么查
- c语言有参函数调用,c语言带参数
- cpu为什么会空闲,cpu为什么会空闲等待
- js中轮播效果,js简单轮播
- C语言函数体放下面 c程序函数体
- 新媒体如何引流到天猫商家,如何利用新媒体资源进行引流