- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的任务是让太阳/月亮物体在整个时间跨度内(就像在平常的一天一样)在屏幕上流动。我可以使用的选项之一是使用“广告牌”,这是一个始终面向相机的四边形。
我还没有使用过很多 direct x 库或技术。这是我的第一个图形项目。这有什么意义?您如何使用它在屏幕上移动太阳物体?
谢谢 :) 这将只在 Windows 机器上运行,我只有直接 x 的选项(9)。
我已经完成了一半的工作。我显示了一张太阳图像,但无论我的相机指向哪个方向,它都位于屏幕前部,超过屏幕的 80%。我在低头看向地面?那里还有一个巨大的太阳。为什么是这样?这是我用来创建它的代码...
void Sun::DrawSun()
{
std::wstring hardcoded = L"..\\Data\\sun.png";
m_SunTexture = MyTextureManager::GetInstance()->GetTextureData(hardcoded.c_str()).m_Texture;
LPD3DXSPRITE sprite = NULL;
if (SUCCEEDED(D3DXCreateSprite(MyRenderer::GetInstance()->GetDevice(), &sprite)))
{
//created!
}
sprite->Begin(D3DXSPRITE_ALPHABLEND);
D3DXVECTOR3 pos;
pos.x = 40.0f;
pos.y = 20.0f;
pos.z = 20.0f;
HRESULT someHr;
someHr = sprite->Draw(m_SunTexture, NULL, NULL, &pos, 0xFFFFFFFF);
sprite->End();
}
显然,我的位置 vector 是硬编码的。这是我需要改变的吗?我在文档中注意到 D3DXSPRITE_BILLBOARD 而不是 D3DXSPRITE_ALPHABLEND 的可能性,这行得通吗?是否可以同时使用两者?
根据之前帖子中提到的教程,D3DXSPRITE 是一个 2d 对象,可能无法在 3d 世界中显示?什么是更明智的选择?
最佳答案
制作屏幕对齐四边形的最简单方法是使用带纹理重写的点 Sprite 。
我从来没有用 DirectX 这样做过,但在 OpenGL 中,启用点 Sprite 是 2 个 API 调用的问题,看起来像这样。
glEnable(GL_POINT_SPRITE);
glTexEnvi(GL_POINT_SPRITE, GL_COORD_REPLACE, true);
启用此模式后,您绘制单个顶点而不是点,呈现屏幕对齐的四边形。坐标替换意味着渲染的四边形是用纹理坐标处理的。这意味着您可以在四边形上放置任何纹理。通常您会希望带有 alpha channel 的东西无缝地融入背景。
在 D3D 中应该有一种同样简单的方法来完成它。此外,如果您编写着色器,它可能允许您做一些额外的事情,例如丢弃纹理的一些像素。
This tutorial might help
还有,谷歌。
--编辑
要将四边形转换为任何其他形状,请使用纹理的 alpha channel 。如果 alpha 为 0,则像素不可见。您不能将 alpha channel 添加到 JPEG,但可以添加到 PNG。这是一个例子:
sun with alpha channel http://www.shiny.co.il/shooshx/sun.png
如果你在 photoshop 中打开这张图片,你会发现背景是不可见的。
如果场景中有其他事情发生,使用 alpha 混合可能会导致一些问题,因此如果发生这种情况,您可以编写一个简单的片段着色器,它会丢弃 alpha==0 的像素。
关于c++ - 如何使用 "billboards"在屏幕上创建一个球形物体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1697931/
我已经结束了这个 Java 控制台。当我添加新文本时,我可以放置一个单词,但当我尝试添加一个句子时,我收到错误!如果有人能看到我错过的东西或问题,我将非常感激。它适用于一个单词,但不适用于两个或更多单
在 Billboard.js 中包含此代码片段: var chart = bb.generate({ data: { columns: [ ["data1", 30, 200, 1
我的任务是让太阳/月亮物体在整个时间跨度内(就像在平常的一天一样)在屏幕上流动。我可以使用的选项之一是使用“广告牌”,这是一个始终面向相机的四边形。 我还没有使用过很多 direct x 库或技术。这
我是 billboard.js 的新手,试图做一件非常简单的事情:改变线条的颜色。 var chart = bb.generate({ data: { columns: [ ["d
使用 billboard.js 创建样条图时,如果数据系列有一些“足够陡”的值,则创建的图表会 chop 一些线条。它将始终显示图表中的所有点,但不是所有连接样条线。 设置顶部/底部填充将为线条提供一
我正在与 Biilboard.js 合作,一个基于D3的库。 我创建了一个图表,我希望能够在其上显示一条消息,例如,如果 Y 轴大于 100 或类似的值,则与条件无关。 这是我想要的一个例子,它是用纯
我正在尝试在时间序列图表上添加一些额外的点。我可以通过提供一个额外的数据系列来做到这一点,在第一个滴答时填充空值。 我想知道的是我们是否可以做如下事情: 为数据系列提供一个值 + 时间戳,这样只有那个
我有一个 JSON 列表,其元素是一系列图表的属性。我想使用 D3 和 billboard.js 动态生成 HTML 列表 div元素,每个元素包含一个图表。设置显示在此 fiddle .当图表出现时
有一个用 billboard.js 生成的图表我想更新 Y 轴的最小/最大值。 为此,我用 html 编写: Max: Min: 在 JS 中: updateY
根据Cesium API,要切换 Assets 的广告牌(或标签)的可见性,您只需将billboard.show属性分配为false即可。当我尝试这样做时,Cesium 会出错 An error oc
图表包含相对于两个 Y 轴 y 和 y2 定位的数据。 它是这样的: 因此,红线由一个 y 轴生成,条形由另一个 y 轴生成。 在这种情况下,红线的值始终为正(值为 13.91,但该线看起来约为 -5
我已经尝试了几个小时来了解如何准确获得“公告牌热门 100”图表(结果与 http://www.billboard.com/#/charts/hot-100 匹配)...但到目前为止还没有成功。 我已
所以我生成了一个图表,隐藏了 y 轴,如下所示: const chart = bb.generate({ "data": { "type": "line", "x"
正在关注 one example我们可以格式化刻度文本。我看到这设置为 multiline: true 默认情况下,这很好,但我也希望能够控制换行发生的位置。有办法吗?
所以如果我是 duplicating this example从 billboard.js 文档看来,添加可选的 Y 网格线似乎很容易。这是我想要的,因为我在不同的场景中动态添加它们。 我似乎无法弄清
我正在尝试为广告牌图表使用一些自定义点。我可以使用 元素,它将呈现为数据点。 我想做的是使用一些可能是一组 svg 元素的点,所以我尝试使用 或 里面有一些元素。 据我所知,图表 仅包含 g/svg
呦呦呦。我有一个疯狂的想法,要从广告牌的 100 首热门歌曲中获取 50 首,将它们下载到 mp3 文件中,然后将它们放在私有(private)在线电台上。 问题是,我这样做的方式不是逐个下载每个文件
我有这个代码: ... normen is my json object .... $.each(normen, function(item) {
我是一名优秀的程序员,十分优秀!