#c #directx
#c #directx
Вопрос:
Я пытаюсь создать трассировку шара.
rBallPos
выполняется корректное обновление. Следующий код не работает при создании цилиндра как следа шара. Как это решить?
LPD3DXMESH /*ID3DXMesh*/ ppMeshCylinder = NULL;
hr = D3DXCreateCylinder(g_d3d_device,0.1f,0.1f,0.1f,1,1,amp;ppMeshCylinder,0);
здесь также ОШИБКА hr != D3D_OK
D3DXMATRIX cylinder, cylinder2, cylinderRotate, cylinderTrans;
D3DXMatrixRotationX(amp;cylinderRotate, 1.5f);
D3DXMatrixTranslation(amp;cylinderTrans, rBallPos.fX, rBallPos.fY, rBallPos.fZ);
D3DXMatrixMultiply(amp;cylinder, amp;cylinderRotate, amp;cylinderTrans);
g_d3d_device->SetTransform(D3DTS_WORLD, amp;cylinder);
ppMeshCylinder->DrawSubset(0);
Нужна помощь.
Ответ №1:
Вам нужно передать указатель на LPD3DXMESH
, поэтому ваш параметр mesh должен быть amp;ppMeshCylinder
вместо ppMeshCylinder
. На самом деле, ваш компилятор должен был уже предупредить вас.
Обновление: Попробуйте передать большее значение для Slices
и Stacks
, скажем, 5 или 10. Невозможно создать цилиндрическую сетку всего с 1 полигоном.
Комментарии:
1. прошу прощения за мою ошибку здесь .. это amp;ppMeshCylinder. Возникает ошибка времени выполнения. Я обновил его.
2. хороший момент .. теперь он работает без какой-либо ошибки во время выполнения и создает меш. теперь я не могу его нарисовать (я думаю) .. потому что местоположения в порядке. На данный момент я делаю это и должен сделать это в Render() fn. что я могу сделать неправильно? Спасибо, что указали ‘Slice’ и ‘Stack’. … А насчет значения no. для них это нигде не объясняется на MS-сайтах .. или я это пропустил. и с помощью 1 фрагмента и стека можно создать цилиндр, не так ли (как в MAYA)?
3. Теперь я могу его нарисовать .. большое спасибо. Однако теперь я хочу придать ему цвет, текстуру или материал. Просто работаю над этим. любой указатель по-прежнему будет полезен.
4. Просто используйте
device->SetMaterial
и передайте структуру материала с нужными свойствами. Или используйтеdevice->SetTexture
и передайте текстуру (которую вы можете создать с помощьюD3DXCreateTextureFromFile
).5. Это должно работать, но не работает, в чем может быть причина?