Isle
Loading...
Searching...
No Matches
impl.h
Go to the documentation of this file.
1#include "compat.h"
2#include "decomp.h"
3#include "tgl/tgl.h"
4
5#include <d3drm.h>
6
7#ifdef DIRECTX5_SDK
9#else
11#endif
12
13// Forward declare D3D types
14struct IDirect3DRM2;
15struct IDirect3DRMDevice2;
16struct IDirect3DRMViewport;
17struct IDirect3DRMFrame2;
18struct IDirect3DRMMesh;
19struct IDirect3DRMMeshBuilder;
20struct IDirect3DRMTexture;
21
22namespace TglImpl
23{
24
25using namespace Tgl;
26
27// Utility function used by implementations
28// FUNCTION: BETA10 0x10169cf0
35inline Result ResultVal(HRESULT result)
36{
37 return SUCCEEDED(result) ? Success : Error;
38}
39
40// Forward declare implementations
41class RendererImpl;
42class DeviceImpl;
43class ViewImpl;
44class LightImpl;
45class CameraImpl;
46class GroupImpl;
47class MeshImpl;
48class TextureImpl;
49class MeshBuilderImpl;
50
55class RendererImpl : public Renderer {
56public:
57 // FUNCTION: BETA10 0x10169a20
58 RendererImpl() : m_data(0) {}
59
60 // FUNCTION: BETA10 0x10169d20
61 ~RendererImpl() override { Destroy(); }
62
67 void* ImplementationDataPtr() override;
68
69 // vtable+0x08
76
83
84 // vtable+0x10
96 const Device*,
97 const Camera*,
98 unsigned long x,
99 unsigned long y,
100 unsigned long width,
101 unsigned long height
102 ) override;
103
108 Camera* CreateCamera() override;
109
118 Light* CreateLight(LightType, float r, float g, float b) override;
119
125 Group* CreateGroup(const Group* pParent) override;
126
127 // vtable+0x20
132 MeshBuilder* CreateMeshBuilder() override;
133
146 int width,
147 int height,
148 int bitsPerTexel,
149 const void* pTexels,
150 int pTexelsArePersistent,
151 int paletteEntryCount,
152 const PaletteEntry* pEntries
153 ) override;
154
159 Texture* CreateTexture() override;
160
165 Result SetTextureDefaultShadeCount(unsigned long) override;
166
167 // vtable+0x30
172 Result SetTextureDefaultColorCount(unsigned long) override;
173
180 HRESULT CreateTextureFromSurface(LPDIRECTDRAWSURFACE pSurface, LPDIRECT3DRMTEXTURE2* pTexture2)
181 {
182 return m_data->CreateTextureFromSurface(pSurface, pTexture2);
183 }
184
185 typedef IDirect3DRM2* RendererDataType;
186
191 const RendererDataType& ImplementationData() const { return m_data; }
192
193 // FUNCTION: BETA10 0x10174c10
199
200public:
204 inline Result Create();
208 inline void Destroy();
217 inline Result CreateLight(LightType type, float r, float g, float b, LightImpl& rLight);
228 inline Result CreateView(
229 const DeviceImpl& rDevice,
230 const CameraImpl& rCamera,
231 unsigned long x,
232 unsigned long y,
233 unsigned long width,
234 unsigned long height,
235 ViewImpl& rView
236 );
246 inline Result CreateCamera(CameraImpl& rCamera);
251 inline Result CreateTexture(TextureImpl& rTexture);
263 inline Result CreateTexture(
264 TextureImpl& rTexture,
265 int width,
266 int height,
267 int bitsPerTexel,
268 const void* pTexels,
269 int texelsArePersistent,
270 int paletteEntryCount,
271 const PaletteEntry* pEntries
272 );
278 inline Result CreateDevice(const DeviceDirect3DCreateData& rCreateData, DeviceImpl& rDevice);
284 inline Result CreateDevice(const DeviceDirectDrawCreateData& rCreateData, DeviceImpl& rDevice);
285
286private:
287 RendererDataType m_data;
288};
289
290extern IDirect3DRM2* g_pD3DRM;
291
292// FUNCTION: BETA10 0x1016dd20
297inline void RendererDestroy(IDirect3DRM2* pRenderer)
298{
299 int refCount = pRenderer->Release();
300 if (refCount <= 0) {
301 g_pD3DRM = NULL;
302 }
303}
304
305// Inlined only
306// FUNCTION: BETA10 0x1016dce0
311{
312 if (m_data) {
313 RendererDestroy(m_data);
314 m_data = NULL;
315 }
316}
317
322class DeviceImpl : public Device {
323public:
324 // FUNCTION: BETA10 0x1016b2e0
325 DeviceImpl() : m_data(0) {}
326
327 // FUNCTION: BETA10 0x1016dd80
328 ~DeviceImpl() override { Destroy(); }
329
334 void* ImplementationDataPtr() override;
335
336 // vtable+0x08
340 unsigned long GetWidth() override;
341
345 unsigned long GetHeight() override;
346
347 // vtable+0x10
353
359
364 Result SetShadeCount(unsigned long) override;
365
370 Result SetDither(int) override;
371
372 // vtable+0x20
376 Result Update() override;
377
382 void HandleActivate(WORD) override;
383
388 void HandlePaint(HDC) override;
389
390 typedef IDirect3DRMDevice2* DeviceDataType;
391
392 // FUNCTION: BETA10 0x101708e0
397 const DeviceDataType& ImplementationData() const { return m_data; }
398
399 // FUNCTION: BETA10 0x100d9540
404 DeviceDataType& ImplementationData() { return m_data; }
405
410 void SetImplementationData(IDirect3DRMDevice2* device) { m_data = device; }
411
415 inline void Destroy();
416
417 friend class RendererImpl;
418
419private:
420 DeviceDataType m_data;
421};
422
423// FUNCTION: BETA10 0x101708c0
428inline void DeviceDestroy(IDirect3DRMDevice2* pDevice)
429{
430 pDevice->Release();
431}
432
433// FUNCTION: BETA10 0x10170880
438{
439 if (m_data) {
440 DeviceDestroy(m_data);
441 m_data = NULL;
442 }
443}
444
449class ViewImpl : public View {
450public:
451 // FUNCTION: BETA10 0x1016b360
452 ViewImpl() : m_data(0) {}
453
454 // FUNCTION: BETA10 0x1016e5d0
455 ~ViewImpl() override { Destroy(); }
456
460 void* ImplementationDataPtr() override;
461
462 // vtable+0x08
467 Result Add(const Light*) override;
468
473 Result Remove(const Light*) override;
474
475 // vtable+0x10
480 Result SetCamera(const Camera*) override;
481
487
494 Result SetFrustrum(float frontClippingDistance, float backClippingDistance, float degrees) override;
495
502 Result SetBackgroundColor(float r, float g, float b) override;
503
504 // vtable+0x20
511 Result GetBackgroundColor(float* r, float* g, float* b) override;
512
516 Result Clear() override;
517
522 Result Render(const Group*) override;
523
531 Result ForceUpdate(unsigned long x, unsigned long y, unsigned long width, unsigned long height) override;
532
533 // vtable+0x30
539 Result TransformWorldToScreen(const float world[3], float screen[4]) override;
540
546 Result TransformScreenToWorld(const float screen[4], float world[3]) override;
547
557 Result Pick(
558 unsigned long x,
559 unsigned long y,
560 const Group** ppGroupsToPickFrom,
561 int groupsToPickFromCount,
562 const Group**& rppPickedGroups,
563 int& rPickedGroupCount
564 ) override;
565
566 typedef IDirect3DRMViewport* ViewDataType;
567
571 const ViewDataType& ImplementationData() const { return m_data; }
572
573 // FUNCTION: BETA10 0x101711c0
577 ViewDataType& ImplementationData() { return m_data; }
578
583 void SetImplementationData(IDirect3DRMViewport* viewport) { m_data = viewport; }
584
591 static Result ViewportCreateAppData(IDirect3DRM2*, IDirect3DRMViewport*, IDirect3DRMFrame2*);
592
596 inline void Destroy();
597
602 Result Add(const LightImpl& rLight);
603
608 Result Remove(const LightImpl& rLight);
609
614 Result SetCamera(const CameraImpl& rCamera);
615
620 Result Render(const GroupImpl& rScene);
621
625 Result Pick(
626 unsigned long x,
627 unsigned long y,
628 const GroupImpl** ppGroupsToPickFrom,
629 int groupsToPickFromCount,
630 const Group**& rppPickedGroups,
631 int& rPickedGroupCount
632 );
633
634 friend class RendererImpl;
635
636private:
637 ViewDataType m_data;
638};
639
640// FUNCTION: BETA10 0x101711a0
645inline void ViewDestroy(IDirect3DRMViewport* pView)
646{
647 pView->Release();
648}
649
650// FUNCTION: BETA10 0x10171160
655{
656 if (m_data) {
657 ViewDestroy(m_data);
658 m_data = NULL;
659 }
660}
661
666class CameraImpl : public Camera {
667public:
668 // FUNCTION: BETA10 0x1016b3e0
669 CameraImpl() : m_data(0) {}
670
671 // FUNCTION: BETA10 0x1016f200
672 ~CameraImpl() override { Destroy(); }
673
677 void* ImplementationDataPtr() override;
678
679 // vtable+0x08
685
686 typedef IDirect3DRMFrame2* CameraDataType;
687
688 // FUNCTION: BETA10 0x10170960
692 const CameraDataType& ImplementationData() const { return m_data; }
693
694 // FUNCTION: BETA10 0x10170980
698 CameraDataType& ImplementationData() { return m_data; }
699
703 inline void Destroy();
704
705 friend class RendererImpl;
706
707private:
708 CameraDataType m_data;
709};
710
711// FUNCTION: BETA10 0x10170940
716inline void CameraDestroy(IDirect3DRMFrame2* pFrame)
717{
718 pFrame->Release();
719}
720
721// FUNCTION: BETA10 0x10170900
726{
727 if (m_data) {
728 CameraDestroy(m_data);
729 m_data = NULL;
730 }
731}
732
737class LightImpl : public Light {
738public:
739 // FUNCTION: BETA10 0x1016b460
740 LightImpl() : m_data(0) {}
741
742 // FUNCTION: BETA10 0x1016f5c0
743 ~LightImpl() override { Destroy(); }
744
748 void* ImplementationDataPtr() override;
749
750 // vtable+0x08
756
763 Result SetColor(float r, float g, float b) override;
764
765 typedef IDirect3DRMFrame2* LightDataType;
766
767 // FUNCTION: BETA10 0x10171b90
771 const LightDataType& ImplementationData() const { return m_data; }
772
773 // FUNCTION: BETA10 0x10171240
777 LightDataType& ImplementationData() { return m_data; }
778
782 inline void Destroy();
783
784 friend class RendererImpl;
785
786private:
787 LightDataType m_data;
788};
789
790// FUNCTION: BETA10 0x10171220
795inline void LightDestroy(IDirect3DRMFrame2* pLight)
796{
797 pLight->Release();
798}
799
800// FUNCTION: BETA10 0x101711e0
805{
806 if (m_data) {
807 LightDestroy(m_data);
808 m_data = NULL;
809 }
810}
811
816class MeshImpl : public Mesh {
817public:
818 // FUNCTION: BETA10 0x1016f970
819 MeshImpl() : m_data(0) {}
820
821 // FUNCTION: BETA10 0x10170460
822 ~MeshImpl() override { Destroy(); }
823
827 void* ImplementationDataPtr() override;
828
829 // vtable+0x08
837 Result SetColor(float r, float g, float b, float a) override;
838
843 Result SetTexture(const Texture*) override;
844
845 // vtable+0x10
850 Result GetTexture(Texture*&) override;
851
857
863
869 Mesh* DeepClone(MeshBuilder*) override;
870
871 // vtable+0x20
877 Mesh* ShallowClone(MeshBuilder*) override;
878
883 struct MeshData {
884 IDirect3DRMMesh* groupMesh;
886 };
887
889
893 const MeshDataType& ImplementationData() const { return m_data; }
894
895 // FUNCTION: BETA10 0x10171b70
899 MeshDataType& ImplementationData() { return m_data; }
900
904 inline void Destroy();
905
910 inline Mesh* DeepClone(const MeshBuilderImpl& rMesh);
911
912 friend class RendererImpl;
913
914private:
915 MeshDataType m_data;
916};
917
918// FUNCTION: BETA10 0x10171b40
924{
925 delete pMesh;
926}
927
928// FUNCTION: BETA10 0x10171b00
933{
934 if (m_data) {
935 MeshDestroy(m_data);
936 m_data = NULL;
937 }
938}
939
944class GroupImpl : public Group {
945public:
946 // FUNCTION: BETA10 0x1016a240
947 GroupImpl() : m_data(0) {}
948
949 // FUNCTION: BETA10 0x1016a410
950 ~GroupImpl() override { Destroy(); }
951
955 void* ImplementationDataPtr() override;
956
957 // vtable+0x08
963
971 Result SetColor(float r, float g, float b, float a) override;
972
973 // vtable+0x10
978 Result SetTexture(const Texture*) override;
979
984 Result GetTexture(Texture*&) override;
985
991
996 Result Add(const Group*) override;
997
998 // vtable+0x20
1003 Result Add(const MeshBuilder*) override;
1004
1009 Result Remove(const Group*) override;
1010
1015 Result Remove(const MeshBuilder*) override;
1016
1020 Result RemoveAll() override;
1021
1022 // vtable+0x30
1028 Result Bounds(D3DVECTOR* p_min, D3DVECTOR* p_max) override;
1029
1030 typedef IDirect3DRMFrame2* GroupDataType;
1031
1032 // FUNCTION: BETA10 0x1016fc20
1036 const GroupDataType& ImplementationData() const { return m_data; }
1037
1038 // FUNCTION: BETA10 0x1016fce0
1042 GroupDataType& ImplementationData() { return m_data; }
1043
1047 inline void Destroy();
1048
1049 friend class RendererImpl;
1050
1051private:
1052 GroupDataType m_data;
1053};
1054
1055// FUNCTION: BETA10 0x1016c2b0
1060inline void GroupDestroy(IDirect3DRMFrame2* pGroup)
1061{
1062 pGroup->Release();
1063}
1064
1065// FUNCTION: BETA10 0x1016c270
1070{
1071 if (m_data) {
1072 GroupDestroy(m_data);
1073 m_data = NULL;
1074 }
1075}
1076
1082public:
1083 // FUNCTION: BETA10 0x1016b260
1084 MeshBuilderImpl() : m_data(0) {}
1085
1086 // FUNCTION: BETA10 0x1016c7e0
1087 ~MeshBuilderImpl() override { Destroy(); }
1088
1092 void* ImplementationDataPtr() override;
1093
1094 // vtable+0x08
1108 unsigned long faceCount,
1109 unsigned long vertexCount,
1110 float (*pPositions)[3],
1111 float (*pNormals)[3],
1112 float (*pTextureCoordinates)[2],
1113 unsigned long (*pFaceIndices)[3],
1114 unsigned long (*pTextureIndices)[3],
1115 ShadingModel shadingModel
1116 ) override;
1117
1123 Result GetBoundingBox(float min[3], float max[3]) const override;
1124
1125 // vtable+0x10
1130 MeshBuilder* Clone() override;
1131
1132 typedef IDirect3DRMMesh* MeshBuilderDataType;
1133
1134 // FUNCTION: BETA10 0x10170420
1138 const MeshBuilderDataType& ImplementationData() const { return m_data; }
1139
1140 // FUNCTION: BETA10 0x10170440
1145
1149 inline void Destroy();
1150
1151 friend class RendererImpl;
1152
1153private:
1166 inline Result CreateMeshImpl(
1167 MeshImpl* pMeshImpl,
1168 unsigned long faceCount,
1169 unsigned long vertexCount,
1170 float (*pPositions)[3],
1171 float (*pNormals)[3],
1172 float (*pTextureCoordinates)[2],
1173 unsigned long (*pFaceIndices)[3],
1174 unsigned long (*pTextureIndices)[3],
1175 ShadingModel shadingModel
1176 );
1177
1178 MeshBuilderDataType m_data;
1179};
1180
1181// FUNCTION: BETA10 0x10170390
1186inline void MeshBuilderDestroy(IDirect3DRMMesh* pMeshBuilder)
1187{
1188 pMeshBuilder->Release();
1189}
1190
1191// FUNCTION: BETA10 0x10170350
1196{
1197 if (m_data) {
1198 MeshBuilderDestroy(m_data);
1199 m_data = NULL;
1200 }
1201}
1202
1208public:
1220 int width,
1221 int height,
1222 int depth,
1223 void* pBuffer,
1224 int useBuffer,
1225 int paletteSize,
1226 PaletteEntry* pEntries
1227 );
1229
1238 Result CreateBuffer(int width, int height, int depth, void* pBuffer, int useBuffer);
1239
1243 void Destroy();
1244
1251 Result FillRowsOfTexture(int y, int height, char* content);
1252
1258 Result InitializePalette(int paletteSize, PaletteEntry* pEntries);
1259
1262};
1263
1268class TextureImpl : public Texture {
1269public:
1270 // FUNCTION: BETA10 0x1016b1e0
1271 TextureImpl() : m_data(0) {}
1272
1273 // FUNCTION: BETA10 0x1016c2d0
1274 ~TextureImpl() override { Destroy(); }
1275
1279 void* ImplementationDataPtr() override;
1280
1281 // vtable+0x08
1289 Result SetTexels(int width, int height, int bitsPerTexel, void* pTexels) override;
1290
1297 void FillRowsOfTexture(int y, int height, void* pBuffer) override;
1298
1299 // vtable+0x10
1305 Result Changed(int texelsChanged, int paletteChanged) override;
1316 int* pWidth,
1317 int* pHeight,
1318 int* pDepth,
1319 void** ppBuffer,
1320 int* ppPaletteSize,
1321 PaletteEntry** ppPalette
1322 ) override;
1323
1329 Result SetPalette(int entryCount, PaletteEntry* entries) override;
1330
1331 typedef IDirect3DRMTexture* TextureDataType;
1332
1333 // FUNCTION: BETA10 0x1016fd60
1337 const TextureDataType& ImplementationData() const { return m_data; }
1338
1339 // FUNCTION: BETA10 0x1016fe20
1344
1349 void SetImplementation(IDirect3DRMTexture* pData) { m_data = pData; }
1350
1354 inline void Destroy();
1355
1356 friend class RendererImpl;
1357
1363 static Result SetImage(IDirect3DRMTexture* pSelf, TglD3DRMIMAGE* pImage);
1364
1365private:
1366 TextureDataType m_data;
1367};
1368
1369// FUNCTION: BETA10 0x1016fd40
1374inline void TextureDestroy(IDirect3DRMTexture* pTexture)
1375{
1376 pTexture->Release();
1377}
1378
1379// FUNCTION: BETA10 0x1016fd00
1384{
1385 if (m_data) {
1386 TextureDestroy(m_data);
1387 m_data = NULL;
1388 }
1389}
1390
1391// Translation helpers
1392// FUNCTION: BETA10 0x1016fc40
1399{
1400 D3DRMRENDERQUALITY renderQuality;
1401
1402 switch (tglShadingModel) {
1403 case Wireframe:
1404 renderQuality = D3DRMRENDER_WIREFRAME;
1405 break;
1406 case UnlitFlat:
1407 renderQuality = D3DRMRENDER_UNLITFLAT;
1408 break;
1409 case Flat:
1410 renderQuality = D3DRMRENDER_FLAT;
1411 break;
1412 case Gouraud:
1413 renderQuality = D3DRMRENDER_GOURAUD;
1414 break;
1415 case Phong:
1416 renderQuality = D3DRMRENDER_PHONG;
1417 break;
1418 default:
1419 renderQuality = D3DRMRENDER_FLAT;
1420 break;
1421 }
1422
1423 return renderQuality;
1424}
1425
1426// FUNCTION: BETA10 0x101703b0
1433{
1434 D3DRMPROJECTIONTYPE projectionType;
1435 switch (tglProjectionType) {
1436 case Perspective:
1437 projectionType = D3DRMPROJECT_PERSPECTIVE;
1438 break;
1439 case Orthographic:
1440 projectionType = D3DRMPROJECT_ORTHOGRAPHIC;
1441 break;
1442 default:
1443 projectionType = D3DRMPROJECT_PERSPECTIVE;
1444 break;
1445 }
1446 return projectionType;
1447}
1448
1449// Yes this function serves no purpose, originally they intended it to
1450// convert from doubles to floats but ended up using floats throughout
1451// the software stack.
1458inline D3DRMMATRIX4D* Translate(FloatMatrix4& tglMatrix4x4, D3DRMMATRIX4D& rD3DRMMatrix4x4)
1459{
1460 for (int i = 0; i < (sizeof(rD3DRMMatrix4x4) / sizeof(rD3DRMMatrix4x4[0])); i++) {
1461 for (int j = 0; j < (sizeof(rD3DRMMatrix4x4[0]) / sizeof(rD3DRMMatrix4x4[0][0])); j++) {
1462 rD3DRMMatrix4x4[i][j] = D3DVAL(tglMatrix4x4[i][j]);
1463 }
1464 }
1465 return &rD3DRMMatrix4x4;
1466}
1467
1468// FUNCTION: BETA10 0x1016fba0
1475inline D3DVECTOR* Translate(const float tglVector[3], D3DVECTOR& rD3DVector)
1476{
1477 rD3DVector.x = D3DVAL(tglVector[0]);
1478 rD3DVector.y = D3DVAL(tglVector[1]);
1479 rD3DVector.z = D3DVAL(tglVector[2]);
1480
1481 return &rD3DVector;
1482}
1483
1484// FUNCTION: BETA10 0x1016fd80
1491{
1492 D3DRMLIGHTTYPE lightType;
1493
1494 // ??? use lookup table
1495 switch (tglLightType) {
1496 case Ambient:
1497 lightType = D3DRMLIGHT_AMBIENT;
1498 break;
1499 case Point:
1500 lightType = D3DRMLIGHT_POINT;
1501 break;
1502 case Spot:
1503 lightType = D3DRMLIGHT_SPOT;
1504 break;
1505 case Directional:
1506 lightType = D3DRMLIGHT_DIRECTIONAL;
1507 break;
1508 case ParallelPoint:
1509 lightType = D3DRMLIGHT_PARALLELPOINT;
1510 break;
1511 default:
1512 lightType = D3DRMLIGHT_AMBIENT;
1513 break;
1514 }
1515
1516 return lightType;
1517}
1518
1519// SYNTHETIC: LEGO1 0x100a16d0
1520// SYNTHETIC: BETA10 0x10169aa0
1521// TglImpl::RendererImpl::`scalar deleting destructor'
1522
1523// SYNTHETIC: LEGO1 0x100a22c0
1524// SYNTHETIC: BETA10 0x1016b700
1525// TglImpl::DeviceImpl::`scalar deleting destructor'
1526
1527// SYNTHETIC: LEGO1 0x100a23a0
1528// SYNTHETIC: BETA10 0x1016b810
1529// TglImpl::ViewImpl::`scalar deleting destructor'
1530
1531// SYNTHETIC: LEGO1 0x100a2480
1532// SYNTHETIC: BETA10 0x1016a2c0
1533// TglImpl::GroupImpl::`scalar deleting destructor'
1534
1535// SYNTHETIC: LEGO1 0x100a2560
1536// SYNTHETIC: BETA10 0x1016b920
1537// TglImpl::CameraImpl::`scalar deleting destructor'
1538
1539// SYNTHETIC: LEGO1 0x100a2640
1540// SYNTHETIC: BETA10 0x1016ba30
1541// TglImpl::LightImpl::`scalar deleting destructor'
1542
1543// SYNTHETIC: LEGO1 0x100a2720
1544// SYNTHETIC: BETA10 0x1016b5f0
1545// TglImpl::MeshBuilderImpl::`scalar deleting destructor'
1546
1547// SYNTHETIC: LEGO1 0x100a2800
1548// SYNTHETIC: BETA10 0x1016b4e0
1549// TglImpl::TextureImpl::`scalar deleting destructor'
1550
1551// SYNTHETIC: LEGO1 0x100a3d80
1552// SYNTHETIC: BETA10 0x1016fa90
1553// TglImpl::MeshImpl::`scalar deleting destructor'
1554
1555// SYNTHETIC: BETA10 0x10169960
1556// ViewportAppData::`scalar deleting destructor'
1557
1558// GLOBAL: LEGO1 0x100dd1e0
1559// IID_IDirect3DRMMeshBuilder
1560
1561} /* namespace TglImpl */
[AI] Implementation of Tgl::Camera, wraps a Direct3DRMFrame2 and provides transformation management [...
Definition: impl.h:666
~CameraImpl() override
[AI] Cleans up frame on destruction [AI]
Definition: impl.h:672
CameraDataType & ImplementationData()
Retrieves camera pointer (mutable) [AI].
Definition: impl.h:698
Result SetTransformation(FloatMatrix4 &) override
Sets the camera transformation matrix [AI].
Definition: camera.cpp:16
void Destroy()
Frees the camera/frame resources [AI].
Definition: impl.h:725
CameraImpl()
[AI] Initializes frame pointer [AI]
Definition: impl.h:669
IDirect3DRMFrame2 * CameraDataType
[AI] Internal pointer to Direct3DRMFrame2 [AI]
Definition: impl.h:686
const CameraDataType & ImplementationData() const
Retrieves camera pointer (const) [AI].
Definition: impl.h:692
void * ImplementationDataPtr() override
Returns Direct3DRMFrame2 implementation pointer [AI].
Definition: camera.cpp:10
[AI] Implements the Tgl::Device interface, encapsulates Direct3DRMDevice2 and provides rendering devi...
Definition: impl.h:322
DeviceDataType & ImplementationData()
Retrieves the device pointer (mutable) [AI].
Definition: impl.h:404
void HandleActivate(WORD) override
Handles application/window activation event [AI].
Definition: device.cpp:62
void SetImplementationData(IDirect3DRMDevice2 *device)
Replaces the implementation pointer [AI].
Definition: impl.h:410
void * ImplementationDataPtr() override
Returns Direct3DRMDevice2 pointer as a generic implementation data pointer [AI].
Definition: device.cpp:10
unsigned long GetHeight() override
Returns the current device height in pixels [AI].
Definition: device.cpp:22
IDirect3DRMDevice2 * DeviceDataType
[AI] Internal data type for device (Direct3DRMDevice2*) [AI]
Definition: impl.h:390
Result Update() override
Submits any pending updates to the device [AI].
Definition: device.cpp:83
~DeviceImpl() override
[AI] Destructor releases resources [AI]
Definition: impl.h:328
Result SetDither(int) override
Enables or disables dithering [AI].
Definition: device.cpp:56
void Destroy()
Frees device resources [AI].
Definition: impl.h:437
const DeviceDataType & ImplementationData() const
Retrieves the device pointer (const) [AI].
Definition: impl.h:397
void HandlePaint(HDC) override
Handles window paint event [AI].
Definition: device.cpp:73
unsigned long GetWidth() override
Returns the current device width in pixels [AI].
Definition: device.cpp:16
Result SetShadingModel(ShadingModel) override
Sets the shading model (flat, Gouraud, etc.) [AI].
Definition: device.cpp:42
DeviceImpl()
[AI] Initializes device data to null [AI]
Definition: impl.h:325
Result SetShadeCount(unsigned long) override
Sets number of shades [AI].
Definition: device.cpp:50
Result SetColorModel(ColorModel) override
Sets the color model used for rendering [AI].
Definition: device.cpp:28
[AI] Implementation of Tgl::Group, wraps a Direct3DRMFrame2 and provides scene graph and transformati...
Definition: impl.h:944
Result SetTransformation(FloatMatrix4 &) override
Sets transformation matrix for group [AI].
Definition: group.cpp:13
GroupDataType & ImplementationData()
Gets internal group/frame pointer, mutable [AI].
Definition: impl.h:1042
Result Add(const Group *) override
Adds a child group [AI].
Definition: group.cpp:83
Result Bounds(D3DVECTOR *p_min, D3DVECTOR *p_max) override
Returns bounding box in world space [AI].
Definition: group.cpp:133
const GroupDataType & ImplementationData() const
Gets internal group/frame pointer, const [AI].
Definition: impl.h:1036
Result GetTexture(Texture *&) override
Gets texture from group [AI].
Definition: group.cpp:45
~GroupImpl() override
[AI] Cleanly releases resources on destruction [AI]
Definition: impl.h:950
void Destroy()
Frees resources for group, such as child groups and geometry [AI].
Definition: impl.h:1069
Result SetTexture(const Texture *) override
Sets texture for all group geometry [AI].
Definition: group.cpp:38
IDirect3DRMFrame2 * GroupDataType
[AI] Internal pointer to Direct3DRMFrame2 [AI]
Definition: impl.h:1030
Result SetMaterialMode(MaterialMode) override
Sets usage/staging of group as a material [AI].
Definition: group.cpp:65
Result Remove(const Group *) override
Removes a child group [AI].
Definition: group.cpp:104
Result SetColor(float r, float g, float b, float a) override
Sets color and alpha for the group [AI].
Definition: group.cpp:21
GroupImpl()
[AI] Initializes frame/group to null [AI]
Definition: impl.h:947
Result RemoveAll() override
Removes all contained groups and meshes [AI].
Definition: group.cpp:111
void * ImplementationDataPtr() override
Returns group implementation pointer [AI].
Definition: group.cpp:7
[AI] Implementation of Tgl::Light, wraps a Direct3DRMFrame2 and color data [AI]
Definition: impl.h:737
Result SetTransformation(FloatMatrix4 &) override
Sets transformation matrix for the light [AI].
Definition: light.cpp:16
Result SetColor(float r, float g, float b) override
Sets color for the light [AI].
Definition: light.cpp:24
void Destroy()
Frees resources for the light [AI].
Definition: impl.h:804
const LightDataType & ImplementationData() const
Retrieves light pointer (const) [AI].
Definition: impl.h:771
void * ImplementationDataPtr() override
Returns Direct3DRMFrame2 implementation pointer [AI].
Definition: light.cpp:10
LightDataType & ImplementationData()
Retrieves light pointer (mutable) [AI].
Definition: impl.h:777
LightImpl()
[AI] Initializes light frame pointer [AI]
Definition: impl.h:740
~LightImpl() override
[AI] Frees resources on destruction [AI]
Definition: impl.h:743
IDirect3DRMFrame2 * LightDataType
[AI] Internal pointer to Direct3DRMFrame2 [AI]
Definition: impl.h:765
[AI] Implements Tgl::MeshBuilder, manages mesh construction and provides the interface for creating g...
Definition: impl.h:1081
Mesh * CreateMesh(unsigned long faceCount, unsigned long vertexCount, float(*pPositions)[3], float(*pNormals)[3], float(*pTextureCoordinates)[2], unsigned long(*pFaceIndices)[3], unsigned long(*pTextureIndices)[3], ShadingModel shadingModel) override
Creates a mesh from arrays of data (positions, normals, etc.) [AI].
Definition: meshbuilder.cpp:18
Result GetBoundingBox(float min[3], float max[3]) const override
Gets the bounding box of the constructed mesh [AI].
MeshBuilderDataType & ImplementationData()
Gets mesh builder pointer (mutable) [AI].
Definition: impl.h:1144
MeshBuilder * Clone() override
Clones the mesh builder [AI].
const MeshBuilderDataType & ImplementationData() const
Gets mesh builder pointer (const) [AI].
Definition: impl.h:1138
~MeshBuilderImpl() override
[AI] Frees mesh building resources on destruction [AI]
Definition: impl.h:1087
void Destroy()
Frees mesh builder resources [AI].
Definition: impl.h:1195
IDirect3DRMMesh * MeshBuilderDataType
[AI] Internal pointer to Direct3DRMMesh [AI]
Definition: impl.h:1132
void * ImplementationDataPtr() override
Returns mesh builder implementation pointer [AI].
Definition: meshbuilder.cpp:12
MeshBuilderImpl()
[AI] Initializes mesh builder to null [AI]
Definition: impl.h:1084
[AI] Implementation of Tgl::Mesh, manages a mesh object and geometry data with group index [AI]
Definition: impl.h:816
Result SetColor(float r, float g, float b, float a) override
Sets the color for this mesh [AI].
Definition: mesh.cpp:20
Result SetTextureMappingMode(TextureMappingMode) override
Sets the mesh texturing mode (UV/cylindrical/etc.) [AI].
Definition: mesh.cpp:44
void * ImplementationDataPtr() override
Returns pointer to mesh implementation data [AI].
Definition: mesh.cpp:14
MeshDataType & ImplementationData()
Gets mesh implementation data (mutable) [AI].
Definition: impl.h:899
Result GetTexture(Texture *&) override
Retrieves the texture currently assigned to this mesh [AI].
Definition: mesh.cpp:180
void Destroy()
Frees mesh and associated data [AI].
Definition: impl.h:932
MeshData * MeshDataType
[AI] Pointer to mesh data struct [AI]
Definition: impl.h:888
~MeshImpl() override
[AI] Frees resources on destruction [AI]
Definition: impl.h:822
const MeshDataType & ImplementationData() const
Gets mesh implementation data (const) [AI].
Definition: impl.h:893
MeshImpl()
[AI] Initializes mesh data pointer [AI]
Definition: impl.h:819
Mesh * ShallowClone(MeshBuilder *) override
Creates a shallow copy of this mesh using a mesh builder [AI].
Definition: mesh.cpp:163
Mesh * DeepClone(MeshBuilder *) override
Creates a deep copy of this mesh using a mesh builder [AI].
Definition: mesh.cpp:154
Result SetTexture(const Texture *) override
Assigns a texture to this mesh [AI].
Definition: mesh.cpp:37
Result SetShadingModel(ShadingModel) override
Sets mesh shading model (flat, Gouraud, etc.) [AI].
Definition: mesh.cpp:63
[AI] Implements Tgl::MeshBuilder; facilitates mesh construction [AI]
Definition: impl.h:55
Device * CreateDevice(const DeviceDirectDrawCreateData &) override
Creates a device from DirectDraw configuration [AI].
Definition: renderer.cpp:115
Result SetTextureDefaultShadeCount(unsigned long) override
Sets the number of default texture shades used [AI].
Definition: renderer.cpp:515
Camera * CreateCamera() override
Creates a camera object [AI].
Definition: renderer.cpp:264
MeshBuilder * CreateMeshBuilder() override
Creates a mesh builder for assembling geometry [AI].
Definition: renderer.cpp:372
Light * CreateLight(LightType, float r, float g, float b) override
Creates a light source with color and type [AI].
Definition: renderer.cpp:341
Texture * CreateTexture() override
Creates an empty texture [AI].
Definition: renderer.cpp:501
IDirect3DRM2 * RendererDataType
[AI] Internal data type for renderer (Direct3DRM2*) [AI]
Definition: impl.h:185
HRESULT CreateTextureFromSurface(LPDIRECTDRAWSURFACE pSurface, LPDIRECT3DRMTEXTURE2 *pTexture2)
Creates a Direct3DRM texture from a DirectDraw surface [AI].
Definition: impl.h:180
RendererDataType & ImplementationData()
Retrieves the Direct3DRM2 pointer (mutable) [AI].
Definition: impl.h:198
void * ImplementationDataPtr() override
Returns implementation-specific data pointer (Direct3DRM2) [AI].
Definition: renderer.cpp:528
View * CreateView(const Device *, const Camera *, unsigned long x, unsigned long y, unsigned long width, unsigned long height) override
Creates a view using provided device and camera [AI].
Definition: renderer.cpp:191
~RendererImpl() override
[AI] Destructor ensures Direct3DRM2 resources are freed. [AI]
Definition: impl.h:61
Group * CreateGroup(const Group *pParent) override
Creates a new group under parent group [AI].
Definition: renderer.cpp:235
const RendererDataType & ImplementationData() const
Retrieves the Direct3DRM2 pointer (const) [AI].
Definition: impl.h:191
void Destroy()
Frees Direct3DRM2 resources [AI].
Definition: impl.h:310
Result SetTextureDefaultColorCount(unsigned long) override
Sets the number of default texture colors used [AI].
Definition: renderer.cpp:521
Result Create()
Initializes Direct3DRM2 [AI].
Definition: renderer.cpp:25
RendererImpl()
[AI] Initializes renderer data to null. [AI]
Definition: impl.h:58
[AI] Implements Tgl::Texture using a Direct3DRMTexture; provides upload and palette control [AI]
Definition: impl.h:1268
void Destroy()
Frees the texture [AI].
Definition: impl.h:1383
static Result SetImage(IDirect3DRMTexture *pSelf, TglD3DRMIMAGE *pImage)
Copies palette/texel data from TglD3DRMIMAGE to Direct3DRMTexture [AI].
Definition: texture.cpp:16
TextureDataType & ImplementationData()
Gets Direct3DRMTexture pointer (mutable) [AI].
Definition: impl.h:1343
void FillRowsOfTexture(int y, int height, void *pBuffer) override
Fills rows of the texture [AI].
Definition: texture.cpp:178
const TextureDataType & ImplementationData() const
Gets Direct3DRMTexture pointer (const) [AI].
Definition: impl.h:1337
~TextureImpl() override
[AI] Releases on destruction [AI]
Definition: impl.h:1274
void * ImplementationDataPtr() override
Returns implementation pointer for texture [AI].
Definition: texture.cpp:228
TextureImpl()
[AI] Initializes texture pointer [AI]
Definition: impl.h:1271
Result GetBufferAndPalette(int *pWidth, int *pHeight, int *pDepth, void **ppBuffer, int *ppPaletteSize, PaletteEntry **ppPalette) override
Returns current buffer and palette [AI].
Definition: texture.cpp:191
Result SetPalette(int entryCount, PaletteEntry *entries) override
Sets the palette entries for the texture [AI].
Definition: texture.cpp:216
Result Changed(int texelsChanged, int paletteChanged) override
Notifies that texels or palette have changed [AI].
Definition: texture.cpp:185
void SetImplementation(IDirect3DRMTexture *pData)
Replaces implementation pointer [AI].
Definition: impl.h:1349
Result SetTexels(int width, int height, int bitsPerTexel, void *pTexels) override
Sets texel data for the texture [AI].
Definition: texture.cpp:167
IDirect3DRMTexture * TextureDataType
[AI] Internal type for Direct3DRMTexture pointer [AI]
Definition: impl.h:1331
[AI] Simple wrapper for D3DRMIMAGE; manages pixel buffer and palette for Direct3DRM textures [AI]
Definition: impl.h:1207
void Destroy()
Destroys any buffers/palette managed by the image [AI].
Definition: texture.cpp:81
D3DRMIMAGE m_image
[AI] Underlying D3DRM image struct [AI]
Definition: impl.h:1260
Result FillRowsOfTexture(int y, int height, char *content)
Writes pixel rows into texture [AI].
Definition: texture.cpp:132
Result InitializePalette(int paletteSize, PaletteEntry *pEntries)
Initializes palette for image [AI].
Definition: texture.cpp:140
~TglD3DRMIMAGE()
[AI] Destroys and frees buffer/palette if needed [AI]
Definition: impl.h:1228
int m_texelsAllocatedByClient
[AI] Flag for texel memory ownership (by client) [AI]
Definition: impl.h:1261
Result CreateBuffer(int width, int height, int depth, void *pBuffer, int useBuffer)
Creates or reallocates image buffer as necessary [AI].
Definition: texture.cpp:102
[AI] Implementation of Tgl::View backed by Direct3DRMViewport, handles scene rendering,...
Definition: impl.h:449
Result Add(const Light *) override
Adds a light to this view [AI].
Definition: view.cpp:197
static Result ViewportCreateAppData(IDirect3DRM2 *, IDirect3DRMViewport *, IDirect3DRMFrame2 *)
Associates user app data with a viewport/frame [AI].
Definition: view.cpp:68
void * ImplementationDataPtr() override
Returns Direct3DRMViewport implementation pointer [AI].
Definition: view.cpp:172
Result Render(const Group *) override
Renders the provided scene/group [AI].
Definition: view.cpp:467
Result GetBackgroundColor(float *r, float *g, float *b) override
Gets the background color [AI].
Definition: view.cpp:364
Result SetFrustrum(float frontClippingDistance, float backClippingDistance, float degrees) override
Sets the view frustum parameters [AI].
Definition: view.cpp:313
Result Pick(unsigned long x, unsigned long y, const Group **ppGroupsToPickFrom, int groupsToPickFromCount, const Group **&rppPickedGroups, int &rPickedGroupCount) override
Picks objects in the view by screen coordinate [AI].
Definition: view.cpp:521
const ViewDataType & ImplementationData() const
Gets internal viewport pointer, const [AI].
Definition: impl.h:571
Result SetBackgroundColor(float r, float g, float b) override
Sets background color [AI].
Definition: view.cpp:342
IDirect3DRMViewport * ViewDataType
[AI] Internal pointer to Direct3DRMViewport [AI]
Definition: impl.h:566
Result TransformWorldToScreen(const float world[3], float screen[4]) override
Converts a world coordinate to screen space [AI].
Definition: view.cpp:564
Result SetCamera(const Camera *) override
Sets the active camera for this view [AI].
Definition: view.cpp:265
Result Clear() override
Clears the view [AI].
Definition: view.cpp:379
Result ForceUpdate(unsigned long x, unsigned long y, unsigned long width, unsigned long height) override
Forces an update/redraw of specified rectangle [AI].
Definition: view.cpp:489
void SetImplementationData(IDirect3DRMViewport *viewport)
Sets internal viewport pointer [AI].
Definition: impl.h:583
Result Remove(const Light *) override
Removes a light from this view [AI].
Definition: view.cpp:225
Result SetProjection(ProjectionType) override
Sets the camera projection type (perspective/orthographic) [AI].
Definition: view.cpp:283
ViewDataType & ImplementationData()
Gets internal viewport pointer, mutable [AI].
Definition: impl.h:577
void Destroy()
Frees viewport resources [AI].
Definition: impl.h:654
~ViewImpl() override
[AI] Cleans up viewport on destruction [AI]
Definition: impl.h:455
Result TransformScreenToWorld(const float screen[4], float world[3]) override
Converts screen coordinates to world space [AI].
Definition: view.cpp:595
ViewImpl()
[AI] Initializes viewport pointer [AI]
Definition: impl.h:452
[AI] Represents a viewpoint in the 3D scene.
Definition: tgl.h:531
[AI] Represents a rendering device/context for the Tgl renderer.
Definition: tgl.h:318
[AI] Scene graph node for parental transforms/color/material/texture; can hold meshes or other groups...
Definition: tgl.h:669
[AI] Represents a source of lighting in the 3D scene.
Definition: tgl.h:559
[AI] Builder class for assembling mesh data and extracting mesh objects.
Definition: tgl.h:768
[AI] Represents a renderable 3D mesh.
Definition: tgl.h:596
[AI] Main interface/factory for rendering resources and scene graphs.
Definition: tgl.h:188
[AI] Represents a GPU or system memory texture for use in rendering.
Definition: tgl.h:826
[AI] Represents a rendering viewport and drawing context.
Definition: tgl.h:397
LPSTR LPSTR LPVOID
Definition: d3dcaps.h:216
@ D3DRMLIGHT_DIRECTIONAL
Definition: d3drmdef.h:58
@ D3DRMLIGHT_SPOT
Definition: d3drmdef.h:57
@ D3DRMLIGHT_PARALLELPOINT
Definition: d3drmdef.h:59
@ D3DRMLIGHT_AMBIENT
Definition: d3drmdef.h:55
@ D3DRMLIGHT_POINT
Definition: d3drmdef.h:56
#define D3DRMRENDER_GOURAUD
Definition: d3drmdef.h:93
D3DVALUE D3DRMMATRIX4D[4][4]
Definition: d3drmdef.h:35
@ D3DRMPROJECT_ORTHOGRAPHIC
Definition: d3drmdef.h:173
@ D3DRMPROJECT_PERSPECTIVE
Definition: d3drmdef.h:172
enum _D3DRMLIGHTTYPE D3DRMLIGHTTYPE
#define D3DRMRENDER_WIREFRAME
Definition: d3drmdef.h:90
#define D3DRMRENDER_PHONG
Definition: d3drmdef.h:94
DWORD D3DRMRENDERQUALITY
Definition: d3drmdef.h:88
enum _D3DRMPROJECTIONTYPE D3DRMPROJECTIONTYPE
#define D3DRMRENDER_UNLITFLAT
Definition: d3drmdef.h:91
#define D3DRMRENDER_FLAT
Definition: d3drmdef.h:92
LONG D3DRMGROUPINDEX
Definition: d3drmdef.h:334
#define D3DVAL(val)
Definition: d3dtypes.h:27
struct IDirectDrawSurface FAR * LPDIRECTDRAWSURFACE
Definition: ddraw.h:74
typedef DWORD(FAR PASCAL *LPCLIPPERCALLBACK)(LPDIRECTDRAWCLIPPER lpDDClipper
long HRESULT
Definition: ddraw.h:115
LPVOID LPD3DRM_APPDATA
[AI] Application data type varies by DirectX version [AI]
Definition: impl.h:10
#define NULL
[AI] Null pointer value (C/C++ semantics).
Definition: legotypes.h:26
[AI] Forward declaration for Direct3DRMTexture interface [AI]
Definition: impl.h:23
void RendererDestroy(IDirect3DRM2 *pRenderer)
Destroys a Direct3DRM2 renderer object, manages global pointer [AI].
Definition: impl.h:297
Result ResultVal(HRESULT result)
Returns a Tgl Result value for HRESULT [AI].
Definition: impl.h:35
D3DRMRENDERQUALITY Translate(ShadingModel tglShadingModel)
Converts Tgl shading model enum to D3DRM enum [AI].
Definition: impl.h:1398
void MeshBuilderDestroy(IDirect3DRMMesh *pMeshBuilder)
Releases a Direct3DRMMesh [AI].
Definition: impl.h:1186
IDirect3DRM2 * g_pD3DRM
[AI] Global pointer to Direct3DRM2, used to manage lifecycle [AI]
Definition: renderer.cpp:21
void TextureDestroy(IDirect3DRMTexture *pTexture)
Releases texture and manages memory [AI].
Definition: impl.h:1374
void MeshDestroy(MeshImpl::MeshDataType pMesh)
Destroys mesh data object [AI].
Definition: impl.h:923
void ViewDestroy(IDirect3DRMViewport *pView)
Releases a Direct3DRMViewport [AI].
Definition: impl.h:645
void CameraDestroy(IDirect3DRMFrame2 *pFrame)
Releases (decreases ref count) for a Direct3DRMFrame2 [AI].
Definition: impl.h:716
void DeviceDestroy(IDirect3DRMDevice2 *pDevice)
Releases (decreases ref count of) a Direct3DRMDevice2 [AI].
Definition: impl.h:428
void LightDestroy(IDirect3DRMFrame2 *pLight)
Releases a Direct3DRMFrame2 used as light [AI].
Definition: impl.h:795
void GroupDestroy(IDirect3DRMFrame2 *pGroup)
Releases group/frame resource from Direct3DRM [AI].
Definition: impl.h:1060
[AI] Namespace containing all classes related to the 3D graphics abstraction/rendering engine.
ShadingModel
[AI] Represents shading models available for rendering geometry.
Definition: tgl.h:29
@ UnlitFlat
[AI] Flat shading without lighting calculations. [AI]
Definition: tgl.h:31
@ Flat
[AI] Flat shaded, possibly single color per polygon with lighting. [AI]
Definition: tgl.h:32
@ Phong
[AI] Phong (pixel-level) shading, if supported. [AI]
Definition: tgl.h:34
@ Gouraud
[AI] Gouraud (vertex-interpolated) shading. [AI]
Definition: tgl.h:33
@ Wireframe
[AI] No shading; renders only mesh edges. [AI]
Definition: tgl.h:30
TextureMappingMode
[AI] Methods for mapping textures onto geometry.
Definition: tgl.h:65
ProjectionType
[AI] Projection modes for camera/view transforms.
Definition: tgl.h:55
@ Perspective
[AI] Distant objects appear smaller. [AI]
Definition: tgl.h:56
@ Orthographic
[AI] Objects keep constant size regardless of distance. [AI]
Definition: tgl.h:57
Result
[AI] Result type used throughout the Tgl API to report operation success or failure.
Definition: tgl.h:126
@ Success
[AI] Operation succeeded. [AI]
Definition: tgl.h:128
@ Error
[AI] Operation failed. [AI]
Definition: tgl.h:127
ColorModel
[AI] Represents available color models for rendering.
Definition: tgl.h:18
float FloatMatrix4[4][4]
[AI] Represents a 4x4 matrix of single-precision floating point values.
Definition: tglvector.h:53
LightType
[AI] Types of lights supported in the renderer.
Definition: tgl.h:42
@ Point
[AI] Light emitted from a point in all directions. [AI]
Definition: tgl.h:44
@ ParallelPoint
[AI] Similar to point, but with parallel rays. [AI]
Definition: tgl.h:47
@ Directional
[AI] Parallel light rays, such as sunlight. [AI]
Definition: tgl.h:46
@ Ambient
[AI] Non-directional lighting applied equally everywhere. [AI]
Definition: tgl.h:43
@ Spot
[AI] Light that emits a cone-shaped beam from a point. [AI]
Definition: tgl.h:45
MaterialMode
[AI] Determines how material properties are sourced for a group/mesh.
Definition: tgl.h:75
[AI] Holds D3DRMMesh pointer and group index for referencing geometry [AI]
Definition: impl.h:883
D3DRMGROUPINDEX groupIndex
[AI] Index within mesh group [AI]
Definition: impl.h:885
IDirect3DRMMesh * groupMesh
[AI] D3DRM mesh pointer [AI]
Definition: impl.h:884
[AI] Contains Direct3D-specific data needed to create a rendering device.
Definition: tgl.h:97
[AI] Contains DirectDraw-specific params for creating a rendering device.
Definition: tgl.h:107
[AI] Represents a single color entry in a palette.
Definition: tgl.h:86
D3DVALUE z
Definition: d3dtypes.h:157
D3DVALUE y
Definition: d3dtypes.h:153
D3DVALUE x
Definition: d3dtypes.h:149