如何在渲染场景中使用颜色?

时间:2018-06-13 11:38:51

标签: c# rendering pixel directx-9 ogre

我正在使用dx9使用mogre图形引擎从特定的视角渲染具有不同对象的场景。每个对象都有自己的id。我根据id为每个对象分配了自己的材料。材料由颜色定义,由id:

计算
red = (id / (256 * 256)) % 256;
green = (id / 256) % 256;
blue = id % 256;

我正在分配这样的颜色值:

materialPtr.GetTechnique(0).GetPass(0).SetAmbient(red / 255.0, green / 255.0, blue / 255.0);

我使用以下Pixelformat渲染到RenderTexture:PixelFormat.PF_B8G8R8A8

渲染后我想计算具有特定颜色的像素以再次获得id。

我正在像这样渲染后计算id:

var pixelValue = Convert.ToInt32(rgbaData[pixelIndex + 2]) * 255 * 255 +
                 Convert.ToInt32(rgbaData[pixelIndex + 1]) * 255 +
                 Convert.ToInt32(rgbaData[pixelIndex]);

我的问题是,我的pixelValue / id不准确; id相差1.我认为,这是存储值精度的问题。图形引擎为每个像素的每个通道计算32位浮点数;每个像素的每个通道的RenderTexture只有1个字节。

你知道我能在这做什么吗?

0 个答案:

没有答案