游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2145|回复: 4

请问如何绘制一个正方形?

[复制链接]

2

主题

3

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2004-10-29 10:13:00 | 显示全部楼层 |阅读模式
Public Sub Vertices_CreateVertexBuffer(ByVal sender As Object, ByVal e As EventArgs) Handles vertexBuffer.Created
        Dim vb As VertexBuffer = CType(sender, VertexBuffer)
        Dim stm As GraphicsStream = vb.Lock(0, 0, 0)
        Dim verts(2) As CustomVertex.TransformedColored
        verts(0).X = 50 : verts(0).Y = 50 : verts(0).Z = 0.5 : verts(0).Rhw = 1 : verts(0).Color = Color.Aqua.ToArgb
        verts(1).X = 250 : verts(1).Y = 50 : verts(1).Z = 0.5 : verts(1).Rhw = 1 : verts(1).Color = Color.Brown.ToArgb
        verts(2).X = 250 : verts(2).Y = 250 : verts(2).Z = 0.5 : verts(2).Rhw = 1 : verts(2).Color = Color.LightPink.ToArgb
        stm.Write(verts)
        vb.Unlock()
    End Sub
上面是一个绘制三角形的例子

我想画一个正方形,于是修改如下:
Dim verts(3) As CustomVertex.TransformedColored
        verts(0).X = 50 : verts(0).Y = 50 : verts(0).Z = 0.5 : verts(0).Rhw = 1 : verts(0).Color = Color.Aqua.ToArgb
        verts(1).X = 250 : verts(1).Y = 50 : verts(1).Z = 0.5 : verts(1).Rhw = 1 : verts(1).Color = Color.Brown.ToArgb
        verts(2).X = 250 : verts(2).Y = 250 : verts(2).Z = 0.5 : verts(2).Rhw = 1 : verts(2).Color = Color.LightPink.ToArgb
verts(3).X = 50 : verts(3).Y = 250 : verts(3).Z = 0.5 : verts(3).Rhw = 1 : verts(3).Color = Color.Red.ToArgb
可是这样得到的还是一个三角形,请问该如何做?

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2004-10-29 12:11:00 | 显示全部楼层

Re:请问如何绘制一个正方形?

d3d只支持三角形,画两个三角形!

2

主题

3

帖子

7

积分

新手上路

Rank: 1

积分
7
 楼主| 发表于 2004-10-29 15:20:00 | 显示全部楼层

Re:请问如何绘制一个正方形?

Dim verts(5) As CustomVertex.TransformedColored
        verts(0).X = 50 : verts(0).Y = 50 : verts(0).Z = 0.5 : verts(0).Rhw = 1 : verts(0).Color = Color.Aqua.ToArgb
        verts(1).X = 250 : verts(1).Y = 50 : verts(1).Z = 0.5 : verts(1).Rhw = 1 : verts(1).Color = Color.Brown.ToArgb
        verts(2).X = 250 : verts(2).Y = 250 : verts(2).Z = 0.5 : verts(2).Rhw = 1 : verts(2).Color = Color.LightPink.ToArgb
verts(3).X = 300 : verts(3).Y = 50 : verts(3).Z = 0.5 : verts(3).Rhw = 1 : verts(3).Color = Color.Red.ToArgb
verts(4).X = 550 : verts(4).Y = 50 : verts(4).Z = 0.5 : verts(4).Rhw = 1 : verts(4).Color = Color.Yellow.ToArgb
verts(5).X = 550 : verts(5).Y = 250 : verts(5).Z = 0.5 : verts(5).Rhw = 1 : verts(5).Color = Color.Green.ToArgb

我这样写还是得到一个三角形啊
该怎么做呢?

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
发表于 2004-10-30 20:08:00 | 显示全部楼层

Re:请问如何绘制一个正方形?

用两个三角形拼成一个矩形呀,你看看你是不是把第二个三角形的法线弄反了。

DX只对一个面的法线一侧进行渲染,另一侧当然什么都没有了

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2004-10-30 21:22:00 | 显示全部楼层

Re:请问如何绘制一个正方形?

仔细去阅读 左右手规则
把旋转方向翻过来或者设置双面渲染!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-23 02:11

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表