d3d绘制带宽度的直线,根据端点和宽度计算三角形顶点

4 篇文章 0 订阅
本文介绍了在Direct3D中如何通过两个三角形模拟绘制带宽度的直线。首先设置了直线的起点和终点以及宽度,然后计算角度和偏移量,构造出四个新的端点坐标,最后将这些坐标作为顶点数据绘制两个三角形,从而实现具有宽度的直线效果。
摘要由CSDN通过智能技术生成

direct3d没法直接设置绘制直线的宽度,可以通过两个三角形组成矩形来模拟带宽度的直线,计算方法如下:


      //----------设置直线的端点和宽度
      float line_start[] = {  0.5f,  0.5f };
      float line_end[]   = { -0.5f, -0.5f };
      float line_width = 0.2;

      float line_width2 = line_width / 2;
      float line_angle = atan2f(line_end[1] - line_start[1], line_end[0] - line_start[0]);
      float x_inc = line_width2 * sin(line_angle), y_inc= line_width2 * cos(line_angle);
      float line_end11[] = { x_inc + line_end[0], -y_inc + line_end[1] };
      float line_end12[] = { -x_inc + line_end[0],  y_inc + line_end[1] };
      float line_end21[] = { x_inc + line_start[0], -y_inc + line_start[1] };
      float line_end22[] = { -x_inc + line_start[0],  y_inc + line_start[1] };

        float vertexData[] = { // x, y, r, g, b, a
            line_end22[0],   line_end22[1],  1.f, 0.f, 0.f, 1.f,
            line_end12[0],   line_end12[1],  1.f, 0.f, 0.f, 1.f,
            line_end11[0],   line_end11[1],  1.f, 0.f, 0.f, 1.f,
            line_end22[0],   line_end22[1],  1.f, 0.f, 0.f, 1.f,
            line_end11[0],   line_end11[1],  1.f, 0.f, 0.f, 1.f,
            line_end21[0],   line_end21[1],  1.f, 0.f, 0.f, 1.f,
        };

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qiuzen

您的资助将帮助我创作更好的作品

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值