Box2D:如何手动渲染身体

2024-02-12

我成功地将 Box2D 安装到我的项目中。但我怎样才能渲染身体呢?假设我正在使用支持绘制多边形的东西。我只想找出主体多边形顶点的当前位置,以便用引擎绘制它。

如果你能帮助我,我将非常感激。


我找到了!!!

void Box2DUtils::DrawBody(SDL_Surface *buffer, b2Body *body, int fr, int fg, int fb, int falpha, int lr, int lg, int lb, int lalpha, bool aa)
{
    const b2Transform& xf = body->GetTransform();
    for (b2Fixture* f = body->GetFixtureList(); f; f = f->GetNext())
    {
        switch (f->GetType())
        {
        case b2Shape::e_circle:
        {
            b2CircleShape* circle = (b2CircleShape*) f->GetShape();

            b2Vec2 center = b2Mul(xf, circle->m_p);
            float32 radius = circle->m_radius;
            b2Vec2 axis = xf.R.col1;

            //m_debugDraw->DrawSolidCircle(center, radius, axis, color);
            if (falpha > 0)
            {
                filledCircleRGBA(buffer, center.x, center.y, (int) radius, fr, fg, fb, falpha);
            }
            if (lalpha > 0)
            {
                if (aa)
                {
                    aacircleRGBA(buffer, center.x, center.y, (int) radius, lr, lg, lb, lalpha);
                } else
                {
                    aacircleRGBA(buffer, center.x, center.y, (int) radius, lr, lg, lb, lalpha);
                }
            } else if (aa)
            {
                aacircleRGBA(buffer, center.x, center.y, (int) radius, fr, fg, fb, falpha);
            }

        }
            break;

        case b2Shape::e_polygon:
        {
            b2PolygonShape* poly = (b2PolygonShape*) f->GetShape();
            int32 vertexCount = poly->m_vertexCount;
            b2Assert(vertexCount <= b2_maxPolygonVertices);
            b2Vec2 vertices[b2_maxPolygonVertices];
            Sint16 xv[b2_maxPolygonVertices];
            Sint16 yv[b2_maxPolygonVertices];
            for (int32 i = 0; i < vertexCount; ++i)
            {
                vertices[i] = b2Mul(xf, poly->m_vertices[i]);
                xv[i] = (int) vertices[i].x;
                yv[i] = (int) vertices[i].y;
            }
            if (falpha > 0)
            {
                filledPolygonRGBA(buffer, xv, yv, (Sint16) vertexCount, fr, fg, fb, falpha);
            }
            if (lalpha > 0)
            {
                if (aa)
                {
                    aapolygonRGBA(buffer, xv, yv, (Sint16) vertexCount, lr, lg, lb, lalpha);
                } else
                {
                    polygonRGBA(buffer, xv, yv, (Sint16) vertexCount, lr, lg, lb, lalpha);
                }
            } else if (aa)
            {
                aapolygonRGBA(buffer, xv, yv, (Sint16) vertexCount, fr, fg, fb, falpha);
            }
            //m_debugDraw->DrawSolidPolygon(vertices, vertexCount, color);
        }
            break;
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Box2D:如何手动渲染身体 的相关文章

  • 显示轨迹指示器

    从图像中您可以看到 在左侧发射的球在其后面发射 与计算的轨迹不符 我使用 SO 中的方程绘制球轨迹question https stackoverflow com questions 10401644 mousejointdef libgd
  • IPython 中的物理括号符号

    我正在努力拥有ket符号通常在乳胶中写为 ket psi 然而 当写在 当使用以下方式编写时 这也不起作用IPython display latex documentclass article usepackage amsmath begi
  • Emscripten 绑定:如何从 Javascript 创建可访问的 C/C++ 数组?

    我在用box2d https github com kripken box2d js 并尝试创建一个链条形状 为了创建链形状或多边形形状 我必须传递向量数组才能指定几何形状 我没有看到任何文档可以帮助我完成此任务 也没有看到有关绑定的注释h
  • 使用 Box2D 制作角色动画的最佳方法是什么?

    我正在为 Android 开发一款 2D 水下动作角色扮演游戏 使用 Box2D 作为物理引擎 主要用于碰撞检测 碰撞响应以及游戏角色在由墙壁 岩石和其他生物组成的环境中的移动 我尝试了两种不同的方法来使用 Box2D 实现角色动画 但都发
  • 使用 BitmapSource 的 WPF 渲染性能

    我创建了一个 WPF 控件 继承自 FrameworkElement 它显示可以平移的平铺图形 每个图块为 256x256 像素 24bpp 我已经重写了 OnRender 在那里 我加载所有新图块 如 BitmapFrame 然后使用 D
  • 缩小时材质会闪闪发光 ( Three.js r78 )

    缩小时材质会闪闪发光 Three js r78 当缩小到一定程度时 其他物体后面的物体的材质开始显现出来 它看起来与面部重叠 面部位于同一平面 时的效果非常相似 为了证明这一点我做了a fiddle https jsfiddle net w
  • 解释预乘 alpha 的工作原理

    有人可以解释一下 为什么使用预乘 alpha 和修正后的混合函数 渲染看起来与 正常 alpha 不同 而从数学上来说 它们是相同的 我研究了这篇文章以了解预乘阿尔法 http blogs msdn com b shawnhar archi
  • 在 Node 中渲染 HTML 字符串?

    好吧 我已经下载了 Express 设置端口process env PORT 8080 并设置应用程序变量var app express 现在 我想要完成的是不是通过文件渲染 HTML 我可以通过字符串来完成吗 var html n n n
  • 如果有内容则产生,否则渲染一些东西(Rails 3)

    我已经离开 Rails 一段时间了 所以也许我错过了一些简单的东西 你怎样才能做到这一点 some default content Or even 在第一种情况下 我正在尝试 def yield or content block conte
  • iOS 14/Xcode 12.0.1 更新后 UIPickerView 渲染不正确

    有人注意到应用程序 UIPickerViews 中的文本渲染不正确 第一个字符被截断吗 我在多个设备上的应用程序的所有 UIPickerViews 中看到了这一点 在大多数情况下 您可以看到第一个字符的几个像素 我尝试过从手机中删除派生数据
  • 巨大的 WPF 视觉效果渲染不精确 - 有解决方案吗?

    在 WPF 中渲染巨大的视觉效果时 视觉效果会扭曲 并且随着坐标的增加扭曲得更加严重 我认为它与渲染管道中使用的浮点数据类型有关 但我不完全确定 无论哪种方式 我都在寻找解决问题的实际解决方案 为了演示我正在讨论的内容 我创建了一个示例应用
  • OpenGL 如何渲染三角形?

    我需要一种算法来渲染像素完美的三角形而不使用 OpenGL 我在哪里可以获得像 OpenGL 使用的这样的算法 最好是单线程 它必须像 OpenGL 那样做 因为 OpenGL 不会在共享边缘的两个三角形上留下间隙或重叠像素 扫描线方法会出
  • Box2D - b2body GetUserData 始终返回 null

    我正在尝试根据 box2d 中的 b2body 调整精灵的位置和旋转 创建主体后 我将 userData 属性设置为保存精灵和位置等的主体对象的属性 问题是在勾选方法 b gt GetUserData 中永远不会检索我放入其中的对象 你能看
  • 实现移动运动体

    Project 我正在制作一个简单的项目 其中我希望能够制作一个运动体并将其从 x 点移动到 y 点 创建运动体 似乎没有太多直接内容 我一直在关注一些关于实现运动体的不同教程 因为我找不到指定如何正确执行此操作的教程 Problem 这似
  • Direct2D 位图画笔拉长

    我必须在屏幕外位图上绘制形状 但是当我尝试渲染位图时遇到一个奇怪的问题 这就是图像的显示方式 这就是我查看位图的方式 以下是我用来创建位图画笔的代码 const auto size renderTarget gt GetSize const
  • 读取、表示和渲染地图数据的最佳方式是什么?

    我有兴趣编写一个简单的导航应用程序作为我的宠物项目 在搜索了免费地图数据后 我决定了美国人口普查局 TIGER http www census gov geo www tiger tgrshp2007 tgrshp2007 html2007
  • 在无头模式下独立运行 Unity,同时捕获屏幕截图

    我需要创建一个在无头模式下运行的统一项目 使用 batchmode 命令 但它必须捕获屏幕截图 例如每一秒并将它们写到一个文件中 我知道在无头模式下 您需要强制调用 Camera Render 才能渲染任何内容 在捕获第一个屏幕截图后 时间
  • “推”匹配 UIInterpolatingMotionEffect? (即访问 UIInterpolatingMotionEffect 上的“物理”)

    借助 UIInterpolatingMotionEffect 扭转 iPhone 即可让图像移动 现在 想象一个红色块 您将使用 UICollisionBehavior 和 UIDynamicItemBehavior 在屏幕上 弹跳 当用户
  • 弹簧质量系统的阻尼效果(或者这是 ElasticEase?)

    我试图在代码中模拟动画效果 几乎任何语言都可以 因为它看起来是数学而不是语言 本质上 它是质量弹簧系统的仿真 我一直在研究 WPF Silverlight 的ElasticEase这似乎与我正在寻找的非常接近 但又不完全一样 首先 这就是我
  • 如何在Sprite Kit中实现鼠标关节?

    我已经在 iOS 上用 Cocos2d Box2d 编写了拖放功能的工作实现 我需要将它移植到 Sprite Kit 逻辑非常基本 当用户触摸屏幕时 找到手指下的精灵 在找到的精灵和场景的物理体之间创建鼠标关节 将关节的目标设置为触摸位置

随机推荐

  • 使用 Supervisord 运行 PostgreSQL

    我想在 Ubuntu 10 04 上使用 Supervisor 运行 PostgreSQL 9 1 目前 我使用 init 脚本手动启动 PostgreSQL etc init d postgresql start 根据这篇文章 http
  • 类型错误:push() 不是一个函数

    我正在尝试将一个项目推送到数组 但它不起作用 当我运行代码时 我收到此错误 未捕获的类型错误 data allItems type push 不是函数 var data allItems exp inc totals exp 0 inc 0
  • 如何在后台运行 Solr Jetty

    我正在使用 Solr 附带的 Jetty Solr 构建 并且希望在后台而不是在终端中运行它 现在我开始它java jar start jar但我希望它记录到一个文件并在服务器的后台运行 以便我可以关闭终端窗口 我确信有一些我找不到的 ja
  • 使用PyInstaller将.py和.txt文件封装成.exe文件

    我有 2 个文件想要放入 exe 文件中 其中一个文件是 py 另一个是 txt我找不到如何获取多个文件并将其转换为可执行文件 请帮忙 您应该将 txt 文件放在一个文件夹中 然后将文件夹的名称放在 标签中 pyinstaller onef
  • 使用 Javascript 访问 CSS 自定义变量

    我在 css 文件中有以下样式 galleryImages position absolute top 24px left 41px width 900px moving false 当我尝试通过 Javascript 访问它时 它返回未定
  • JMeter(活动?)FTP 到 VLTrader

    情况 我正在使用 JMeter 来加载测试我的通信应用程序 Cleo VLTrader 我是 JMeter 的新手 并且能够使 HTTP 通信工作 但不能使 FTP 工作 当我尝试使用 JMeter FTP 请求采样器时 我可以在服务器端看
  • Nodejs如何为每个请求设置内容类型标头

    我想知道如何设置标题 Content Type application json 对于每个进来的 Nodejs Express 请求 我尝试了这两行 但如果我自己不添加标头 我的调用仍然失败 app use function req res
  • 如何创建一个Looper线程,然后立即向其发送消息?

    我有一个工作线程位于后台 处理消息 像这样的事情 class Worker extends Thread public volatile Handler handler actually private of course public v
  • Clojure 中的结构共享

    我不清楚 Clojure 中的结构共享 下面是一个函数 xconj 取自 Joy of Clojure 顺便说一句 很棒的书 Building a naive binary search tree using recursion defn
  • 如何禁用
     块的 Prettier 以便保留新行(换行符)?                
                

    prettier config js module exports arrowParens always bracketSpacing true endOfLine auto printWidth 180 semi true singleQ
  • 如何使用请求模块缓冲 HTTP 响应?

    我想将 HTTP 响应的内容流式传输到变量 我的目标是通过获取图像request 并将其存储在 MongoDB 中 但图像总是损坏 这是我的代码 request http google com doodle png function err
  • 如何在使用 boto3 create_presigned_post 时添加元数据?

    想要将自定义元数据添加到我上传的文件中create presigned post来自boto3 我正在运行以下代码 但收到 403 响应 下面的代码借用自here https boto3 amazonaws com v1 documenta
  • 如何将 BytesIO 与 matplotlib 和 pyqt5 一起使用?

    我在 matplotlib 中制作了一个图表 并希望将其放入图像中并在我的 pyqt5 应用程序中使用它 有人建议我为此使用 BytesIO 到目前为止 这是我的代码 绘制我的图表 plt axis equal buff io BytesI
  • 应该是“安排-断言-行动-断言”吗?

    关于经典的测试模式安排 执行 断言 http c2 com cgi wiki ArrangeActAssert 我经常发现自己在 Act 之前添加了反断言 这样我就知道传递的断言确实是作为操作的结果传递的 我认为它类似于红绿重构中的红色 只
  • 所有执行器均已死亡 MinHash LSH PySpark approxSimilarityJoin EMR 集群上的自连接

    在 name id name 组合的数据帧上调用 Spark 的 MinHashLSH 的 approxSimilarityJoin 时 我遇到了问题 我尝试解决的问题的摘要 我有一个包含大约 3000 万个公司名称唯一 name id n
  • CALayer 作为子层不可见

    我正在尝试构建一个动画圆圈 该圆圈将按顺时针方向绘制 直到它变成完整的圆圈 如图所示iPhone 核心动画 画一个圆 https stackoverflow com questions 7991086 iphone core animati
  • Android findViewById 返回 NULL

    有时我的 xml 视图和 Android Eclipse SDK 中包含的子元素有一个奇怪的问题 例如 我有一个名为 main xml 的 xml 视图 其中有一个 LinearLayout 和一个 TextView 作为唯一的子视图 其
  • 如何在LUIS Dialog内部调用LUIS Dialog?

    我的机器人有 LUIS 对话框 有几个意图 我从 MessageController 调用 LUIS 对话框 如果检测到意图 我将启动一个子对话框 当子对话框完成后 我调用context Done response from user 在那
  • NULLS FIRST/LAST 覆盖在 Spring Boot 3/Hibernate 6 的 JPA 存储库中不再起作用

    在带有 Hibernate 5 的 Spring Boot 2 中 我们有一个如下查询 Query SELECT m FROM ProjectMember m ORDER BY m lastActive ASC NULLS LAST Lis
  • Box2D:如何手动渲染身体

    我成功地将 Box2D 安装到我的项目中 但我怎样才能渲染身体呢 假设我正在使用支持绘制多边形的东西 我只想找出主体多边形顶点的当前位置 以便用引擎绘制它 如果你能帮助我 我将非常感激 我找到了 void Box2DUtils DrawBo