Ok, I was convinced I had tried that last night but obviously I hadn't (was 2am
when I was trying it).
Anyway - here is my code now:
for(DWORD dwX = 0; dwX < in_pGeom->m_lNbColorStreams; dwX++)
{
for(DWORD dwI = 0; dwI < in_pGeom->m_NbVertices; dwI++)
{
color = in_pGeom->m_pColorPtrArray[dwI][dwX];
XSI_RTS_ColorRGBA a = color;
color.m_alpha = 0;
color.m_blue = a.m_red;
color.m_green = a.m_green;
color.m_red = a.m_blue;
in_pGeom->m_pColorPtrArray[dwI][dwX] = color;
}
}
and that works a hell of a lot better. I know that my mesh is a POSD with 1
colour stream. I seem to be getting rogue vertex colours though:
http://www.xiotex.com/rogue.JPG
in_pGeom reports 144 vertices and they look like (before swizzle):
[3188] index = 0 a = 255 r = 192 g = 192 b = 192
[3188] index = 1 a = 255 r = 192 g = 192 b = 192
[3188] index = 2 a = 255 r = 192 g = 192 b = 192
[3188] index = 3 a = 255 r = 192 g = 192 b = 192
[3188] index = 4 a = 255 r = 192 g = 192 b = 192
[3188] index = 5 a = 255 r = 192 g = 192 b = 192
[3188] index = 6 a = 255 r = 192 g = 192 b = 192
[3188] index = 7 a = 255 r = 192 g = 192 b = 192
[3188] index = 8 a = 255 r = 192 g = 192 b = 192
[3188] index = 9 a = 255 r = 192 g = 192 b = 192
[3188] index = 10 a = 255 r = 192 g = 192 b = 192
[3188] index = 11 a = 255 r = 192 g = 192 b = 192
[3188] index = 12 a = 255 r = 192 g = 192 b = 192
[3188] index = 13 a = 255 r = 192 g = 192 b = 192
[3188] index = 14 a = 255 r = 192 g = 192 b = 192
[3188] index = 15 a = 255 r = 192 g = 192 b = 192
[3188] index = 16 a = 255 r = 192 g = 192 b = 192
[3188] index = 17 a = 255 r = 192 g = 192 b = 192
[3188] index = 18 a = 255 r = 192 g = 192 b = 192
[3188] index = 19 a = 255 r = 192 g = 192 b = 192
[3188] index = 20 a = 255 r = 0 g = 30 b = 255
[3188] index = 21 a = 255 r = 0 g = 30 b = 255
[3188] index = 22 a = 255 r = 0 g = 30 b = 255
[3188] index = 23 a = 255 r = 0 g = 30 b = 255
[3188] index = 24 a = 255 r = 0 g = 30 b = 255
[3188] index = 25 a = 255 r = 0 g = 30 b = 255
[3188] index = 26 a = 255 r = 0 g = 30 b = 255
[3188] index = 27 a = 255 r = 0 g = 30 b = 255
[3188] index = 28 a = 255 r = 0 g = 30 b = 255
[3188] index = 29 a = 255 r = 0 g = 30 b = 255
[3188] index = 30 a = 255 r = 0 g = 30 b = 255
[3188] index = 31 a = 255 r = 0 g = 30 b = 255
[3188] index = 32 a = 255 r = 0 g = 30 b = 255
[3188] index = 33 a = 255 r = 0 g = 30 b = 255
[3188] index = 34 a = 255 r = 0 g = 30 b = 255
[3188] index = 35 a = 255 r = 0 g = 30 b = 255
[3188] index = 36 a = 255 r = 0 g = 30 b = 255
[3188] index = 37 a = 255 r = 0 g = 30 b = 255
[3188] index = 38 a = 255 r = 0 g = 30 b = 255
[3188] index = 39 a = 255 r = 192 g = 192 b = 192
[3188] index = 40 a = 255 r = 192 g = 192 b = 192
[3188] index = 41 a = 255 r = 192 g = 192 b = 192
[3188] index = 42 a = 255 r = 192 g = 192 b = 192
[3188] index = 43 a = 255 r = 192 g = 192 b = 192
[3188] index = 44 a = 255 r = 192 g = 192 b = 192
[3188] index = 45 a = 255 r = 192 g = 192 b = 192
[3188] index = 46 a = 255 r = 192 g = 192 b = 192
[3188] index = 47 a = 255 r = 192 g = 192 b = 192
[3188] index = 48 a = 255 r = 192 g = 192 b = 192
[3188] index = 49 a = 255 r = 192 g = 192 b = 192
[3188] index = 50 a = 255 r = 192 g = 192 b = 192
[3188] index = 51 a = 255 r = 192 g = 192 b = 192
[3188] index = 52 a = 255 r = 192 g = 192 b = 192
[3188] index = 53 a = 255 r = 192 g = 192 b = 192
[3188] index = 54 a = 255 r = 192 g = 192 b = 192
[3188] index = 55 a = 255 r = 192 g = 192 b = 192
[3188] index = 56 a = 255 r = 192 g = 192 b = 192
[3188] index = 57 a = 255 r = 192 g = 192 b = 192
[3188] index = 58 a = 255 r = 255 g = 0 b = 0
[3188] index = 59 a = 255 r = 255 g = 0 b = 0
[3188] index = 60 a = 255 r = 255 g = 0 b = 0
[3188] index = 61 a = 255 r = 255 g = 0 b = 0
[3188] index = 62 a = 255 r = 255 g = 0 b = 0
[3188] index = 63 a = 255 r = 255 g = 0 b = 0
[3188] index = 64 a = 255 r = 255 g = 0 b = 0
[3188] index = 65 a = 255 r = 255 g = 0 b = 0
[3188] index = 66 a = 255 r = 255 g = 0 b = 0
[3188] index = 67 a = 255 r = 255 g = 0 b = 0
[3188] index = 68 a = 255 r = 255 g = 0 b = 0
[3188] index = 69 a = 255 r = 255 g = 0 b = 0
[3188] index = 70 a = 255 r = 255 g = 0 b = 0
[3188] index = 71 a = 255 r = 255 g = 0 b = 0
[3188] index = 72 a = 255 r = 255 g = 0 b = 0
[3188] index = 73 a = 255 r = 255 g = 0 b = 0
[3188] index = 74 a = 255 r = 255 g = 0 b = 0
[3188] index = 75 a = 255 r = 255 g = 0 b = 0
[3188] index = 76 a = 255 r = 255 g = 0 b = 0
[3188] index = 77 a = 255 r = 192 g = 192 b = 192
[3188] index = 78 a = 255 r = 192 g = 192 b = 192
[3188] index = 79 a = 255 r = 192 g = 192 b = 192
[3188] index = 80 a = 255 r = 192 g = 192 b = 192
[3188] index = 81 a = 255 r = 192 g = 192 b = 192
[3188] index = 82 a = 255 r = 192 g = 192 b = 192
[3188] index = 83 a = 255 r = 192 g = 192 b = 192
[3188] index = 84 a = 255 r = 192 g = 192 b = 192
[3188] index = 85 a = 255 r = 192 g = 192 b = 192
[3188] index = 86 a = 255 r = 192 g = 192 b = 192
[3188] index = 87 a = 255 r = 192 g = 192 b = 192
[3188] index = 88 a = 255 r = 192 g = 192 b = 192
[3188] index = 89 a = 255 r = 192 g = 192 b = 192
[3188] index = 90 a = 255 r = 192 g = 192 b = 192
[3188] index = 91 a = 255 r = 192 g = 192 b = 192
[3188] index = 92 a = 255 r = 192 g = 192 b = 192
[3188] index = 93 a = 255 r = 192 g = 192 b = 192
[3188] index = 94 a = 255 r = 192 g = 192 b = 192
[3188] index = 95 a = 255 r = 192 g = 192 b = 192
[3188] index = 96 a = 255 r = 60 g = 255 b = 0
[3188] index = 97 a = 255 r = 60 g = 255 b = 0
[3188] index = 98 a = 255 r = 60 g = 255 b = 0
[3188] index = 99 a = 255 r = 60 g = 255 b = 0
[3188] index = 100 a = 255 r = 60 g = 255 b = 0
[3188] index = 101 a = 255 r = 60 g = 255 b = 0
[3188] index = 102 a = 255 r = 60 g = 255 b = 0
[3188] index = 103 a = 255 r = 60 g = 255 b = 0
[3188] index = 104 a = 255 r = 60 g = 255 b = 0
[3188] index = 105 a = 255 r = 60 g = 255 b = 0
[3188] index = 106 a = 255 r = 60 g = 255 b = 0
[3188] index = 107 a = 255 r = 60 g = 255 b = 0
[3188] index = 108 a = 255 r = 60 g = 255 b = 0
[3188] index = 109 a = 255 r = 60 g = 255 b = 0
[3188] index = 110 a = 255 r = 60 g = 255 b = 0
[3188] index = 111 a = 255 r = 60 g = 255 b = 0
[3188] index = 112 a = 255 r = 60 g = 255 b = 0
[3188] index = 113 a = 255 r = 60 g = 255 b = 0
[3188] index = 114 a = 255 r = 60 g = 255 b = 0
[3188] index = 115 a = 255 r = 192 g = 192 b = 192
[3188] index = 116 a = 255 r = 192 g = 192 b = 192
[3188] index = 117 a = 255 r = 192 g = 192 b = 192
[3188] index = 118 a = 255 r = 192 g = 192 b = 192
[3188] index = 119 a = 255 r = 192 g = 192 b = 192
[3188] index = 120 a = 255 r = 192 g = 192 b = 192
[3188] index = 121 a = 255 r = 192 g = 192 b = 192
[3188] index = 122 a = 255 r = 192 g = 192 b = 192
[3188] index = 123 a = 255 r = 192 g = 192 b = 192
[3188] index = 124 a = 255 r = 192 g = 192 b = 192
[3188] index = 125 a = 255 r = 192 g = 192 b = 192
[3188] index = 126 a = 255 r = 192 g = 192 b = 192
[3188] index = 127 a = 255 r = 192 g = 192 b = 192
[3188] index = 128 a = 255 r = 192 g = 192 b = 192
[3188] index = 129 a = 255 r = 192 g = 192 b = 192
[3188] index = 130 a = 255 r = 192 g = 192 b = 192
[3188] index = 131 a = 255 r = 192 g = 192 b = 192
[3188] index = 132 a = 255 r = 192 g = 192 b = 192
[3188] index = 133 a = 255 r = 192 g = 192 b = 192
[3188] index = 134 a = 255 r = 192 g = 192 b = 192
[3188] index = 135 a = 255 r = 192 g = 192 b = 192
[3188] index = 136 a = 255 r = 192 g = 192 b = 192
[3188] index = 137 a = 255 r = 192 g = 192 b = 192
[3188] index = 138 a = 255 r = 192 g = 192 b = 192
[3188] index = 139 a = 255 r = 192 g = 192 b = 192
[3188] index = 140 a = 255 r = 192 g = 192 b = 192
[3188] index = 141 a = 255 r = 192 g = 192 b = 192
[3188] index = 142 a = 255 r = 192 g = 192 b = 192
[3188] index = 143 a = 255 r = 192 g = 192 b = 192
[3188] index = 144 a = 0 r = 0 g = 0 b = 0
and other associated data:
[3188] m_lNbColorStreams = 1
[3188] m_lNbNormalStreams = 1
[3188] m_lNbTexCoordStreams = 0
[3188] m_lNbTriangleLists = 8
[3188] m_NbUniqueVertices = 0
[3188] m_NbVertices = 144
[3188] m_pColorArray = 0
[3188] m_pColorPtrArray = 8DEE140
[3188] m_pIndices = 0
>The way you're iterating the color array is not correct.
>
>For RTS_TL_BYREF or RTS_TL_BYREF_POSD you use:
>XSI_RTS_ColorRGBA *color =
>in_pGeom->m_pColorPtrArray[index][color_stream_index];
>
>And for RTS_TL_SINGLE_INDEX_ARRAY:
>XSI_RTS_ColorRGBA *color =
>&in_pGeom->m_pColorArray[m_pIndices[index]][color_stream_index]
>
>So you have to handle both code paths...
>
>Wessam Bahnassi
>Microsoft DirectX MVP,
>Programmer
>Electronic Arts
>--
>In|Structurez Arabic Gamedev Community
>www.instructurez.com
>
>> -----Original Message-----
>> From: owner-3dgames(at)Softimage.COM [owner-3dgames(at)Softimage.COM] On
>> Behalf Of Byron Atinson-Jones
>> Sent: Saturday, August 19, 2006 5:51 PM
>> To: 3DGames(at)Softimage.COM
>> Subject:
>>
>> My first pass code looks like:
>>
>> XSI_RTS_ColorRGBA *color = in_pGeom->m_pColorPtrArray[0];
>>
>> for(DWORD dwI = 0; dwI m_NbVertices; dwI++)
>> {
>> XSI_RTS_ColorRGBA a = *color;
>>
>> color->m_alpha = 0;
>> color->m_blue = a.m_red;
>> color->m_green = a.m_green;
>> color->m_red = a.m_blue;
>> ++color;
>> }
>>
>> When applied to something simple like a cube it appears to work fine. When
>> I
>> moved onto more complex meshes like a sphere it begins to go a bit wrong:
>>
>> This is the view in shaded:
>>
>> www.xiotex.com/shaded.JPG
>>
>> and the same view in dx:
>>
>> www.xiotex.com/dx.JPG
>>
>> Any clues you can give me about what I am doing wrong...
>>
>>
>>
>> >In XSI_RTS_TriangulatedGeometry's definition:
>> >XSI_RTS_ColorRGBA *m_pColorArray;
>> >
>> >So you have to swizzle that before you use it your shader. Since you're
>> >modifying the DXDraw node's code, then you can do the swizzle there or
>> >probably better at the graphics sequencer level.
>> >
>> >Also, the code for DXDraw and the DX graphics sequencer shows what states
>> >are overwritten by these nodes. Note that they use a state block to
>> preserve
>> >original device state after EndScene().
>> ---
>> Unsubscribe? Mail Majordomo(at)Softimage.COM with the following text in body:
>> unsubscribe 3dgames
>
>---
>Unsubscribe? Mail Majordomo(at)Softimage.COM with the following text in body:
>unsubscribe 3dgames
---
Unsubscribe? Mail Majordomo(at)Softimage.COM with the following text in body:
unsubscribe 3dgames