Isle
Loading...
Searching...
No Matches
tgl.h
Go to the documentation of this file.
1#ifndef _tgl_h
2#define _tgl_h
3
4#include "tglvector.h"
5
6#include <d3d.h>
7#include <ddraw.h>
8#include <windows.h>
9
10namespace Tgl
11{
12
19 // Note: Not used in shipped game, no way to verify contents.
21 RGB
22};
23
34 Phong
35};
36
48};
49
58};
59
68};
69
79};
80
87 unsigned char m_red;
88 unsigned char m_green;
89 unsigned char m_blue;
90};
91
98 IDirect3D2* m_pDirect3D;
99 IDirect3DDevice2* m_pDirect3DDevice;
100};
101
108 const GUID* m_driverGUID;
109 HWND m_hWnd;
110 IDirectDraw* m_pDirectDraw;
111 IDirectDrawSurface* m_pFrontBuffer;
112 IDirectDrawSurface* m_pBackBuffer;
113
114 // These have possibly been removed in the shipped game
115 // (Put them back if we can verify when we find a callsite
116 // which constructs this type)
117 // IDirectDrawPalette* m_pPalette;
118 // int m_isFullScreen;
119};
120
126enum Result {
127 Error = 0,
128 Success = 1
130
136inline int Succeeded(Result result)
137{
138 return (result == Success);
139}
140
141// Forward declarations
142class Renderer;
143class Object;
144class Device;
145class View;
146class Light;
147class Camera;
148class Group;
149class Mesh;
150class Texture;
151class MeshBuilder;
152
153// VTABLE: LEGO1 0x100db980
154// VTABLE: BETA10 0x101c3148
160class Object {
161public:
165 virtual ~Object() {}
166
171 virtual void* ImplementationDataPtr() = 0;
172
173 // SYNTHETIC: BETA10 0x10169b50
174 // Tgl::Object::Object
175
176 // SYNTHETIC: LEGO1 0x100a2250
177 // SYNTHETIC: BETA10 0x10169cb0
178 // Tgl::Object::`scalar deleting destructor'
179};
180
181// VTABLE: LEGO1 0x100db948
182// VTABLE: BETA10 0x101c3110
188class Renderer : public Object {
189public:
196
203
214 virtual View* CreateView(
215 const Device*,
216 const Camera*,
217 unsigned long x,
218 unsigned long y,
219 unsigned long width,
220 unsigned long height
221 ) = 0;
222
227 virtual Camera* CreateCamera() = 0;
228
237 virtual Light* CreateLight(LightType, float r, float g, float b) = 0;
238
244 virtual Group* CreateGroup(const Group* pParent = 0) = 0;
245
251
264 int width,
265 int height,
266 int bitsPerTexel,
267 const void* pTexels,
268 int pTexelsArePersistent,
269 int paletteEntryCount,
270 const PaletteEntry* pEntries
271 ) = 0;
272
277 virtual Texture* CreateTexture() = 0;
278
284 virtual Result SetTextureDefaultShadeCount(unsigned long) = 0;
285
291 virtual Result SetTextureDefaultColorCount(unsigned long) = 0;
292
293 // SYNTHETIC: BETA10 0x10169ae0
294 // Tgl::Renderer::Renderer
295
296 // SYNTHETIC: LEGO1 0x100a1770
297 // SYNTHETIC: BETA10 0x10169b80
298 // Tgl::Renderer::~Renderer
299
300 // SYNTHETIC: LEGO1 0x100a17c0
301 // SYNTHETIC: BETA10 0x10169be0
302 // Tgl::Renderer::`scalar deleting destructor'
303};
304
310
311// VTABLE: LEGO1 0x100db9b8
312// VTABLE: BETA10 0x101c32b0
318class Device : public Object {
319public:
324 virtual unsigned long GetWidth() = 0;
325
330 virtual unsigned long GetHeight() = 0;
331
338
345
351 virtual Result SetShadeCount(unsigned long) = 0;
352
358 virtual Result SetDither(int) = 0;
359
364 virtual Result Update() = 0;
365
370 virtual void HandleActivate(WORD) = 0;
371
376 virtual void HandlePaint(HDC) = 0;
377
378 // SYNTHETIC: BETA10 0x1016b740
379 // Tgl::Device::Device
380
381 // SYNTHETIC: LEGO1 0x100a2350
382 // SYNTHETIC: BETA10 0x1016b7b0
383 // Tgl::Device::~Device
384
385 // SYNTHETIC: LEGO1 0x100a28e0
386 // SYNTHETIC: BETA10 0x1016bbc0
387 // Tgl::Device::`scalar deleting destructor'
388};
389
390// VTABLE: LEGO1 0x100dba28
391// VTABLE: BETA10 0x101c32e0
397class View : public Object {
398public:
404 virtual Result Add(const Light*) = 0;
405
411 virtual Result Remove(const Light*) = 0;
412
418 virtual Result SetCamera(const Camera*) = 0;
419
426
434 virtual Result SetFrustrum(float frontClippingDistance, float backClippingDistance, float degrees) = 0;
435
443 virtual Result SetBackgroundColor(float r, float g, float b) = 0;
444
452 virtual Result GetBackgroundColor(float* r, float* g, float* b) = 0;
453
458 virtual Result Clear() = 0;
459
465 virtual Result Render(const Group*) = 0;
466
475 virtual Result ForceUpdate(unsigned long x, unsigned long y, unsigned long width, unsigned long height) = 0;
476
483 virtual Result TransformWorldToScreen(const float world[3], float screen[4]) = 0;
484
491 virtual Result TransformScreenToWorld(const float screen[4], float world[3]) = 0;
492
503 virtual Result Pick(
504 unsigned long x,
505 unsigned long y,
506 const Group** ppGroupsToPickFrom,
507 int groupsToPickFromCount,
508 const Group**& rppPickedGroups,
509 int& rPickedGroupCount
510 ) = 0;
511
512 // SYNTHETIC: BETA10 0x1016b850
513 // Tgl::View::View
514
515 // SYNTHETIC: LEGO1 0x100a2430
516 // SYNTHETIC: BETA10 0x1016b8c0
517 // Tgl::View::~View
518
519 // SYNTHETIC: LEGO1 0x100a2950
520 // SYNTHETIC: BETA10 0x1016bc00
521 // Tgl::View::`scalar deleting destructor'
522};
523
524// VTABLE: LEGO1 0x100dbae8
525// VTABLE: BETA10 0x101c3320
531class Camera : public Object {
532public:
539
540 // SYNTHETIC: BETA10 0x1016b960
541 // Tgl::Camera::Camera
542
543 // SYNTHETIC: LEGO1 0x100a25f0
544 // SYNTHETIC: BETA10 0x1016b9d0
545 // Tgl::Camera::~Camera
546
547 // SYNTHETIC: LEGO1 0x100a2a30
548 // SYNTHETIC: BETA10 0x1016bc40
549 // Tgl::Camera::`scalar deleting destructor'
550};
551
552// VTABLE: LEGO1 0x100dbb08
553// VTABLE: BETA10 0x101c3330
559class Light : public Object {
560public:
567
575 virtual Result SetColor(float r, float g, float b) = 0;
576
577 // SYNTHETIC: BETA10 0x1016ba70
578 // Tgl::Light::Light
579
580 // SYNTHETIC: LEGO1 0x100a26d0
581 // SYNTHETIC: BETA10 0x1016bae0
582 // Tgl::Light::~Light
583
584 // SYNTHETIC: LEGO1 0x100a2aa0
585 // SYNTHETIC: BETA10 0x1016bc80
586 // Tgl::Light::`scalar deleting destructor'
587};
588
589// VTABLE: LEGO1 0x100dbbb0
590// VTABLE: BETA10 0x101c3360
596class Mesh : public Object {
597public:
606 virtual Result SetColor(float r, float g, float b, float a) = 0;
607
613 virtual Result SetTexture(const Texture*) = 0;
614
620 virtual Result GetTexture(Texture*&) = 0;
621
628
635
641 virtual Mesh* DeepClone(MeshBuilder*) = 0;
642
649
650 // SYNTHETIC: BETA10 0x1016fad0
651 // Tgl::Mesh::Mesh
652
653 // SYNTHETIC: LEGO1 0x100a3e10
654 // SYNTHETIC: BETA10 0x1016fb40
655 // Tgl::Mesh::~Mesh
656
657 // SYNTHETIC: LEGO1 0x100a3e60
658 // SYNTHETIC: BETA10 0x1016fbe0
659 // Tgl::Mesh::`scalar deleting destructor'
660};
661
662// VTABLE: LEGO1 0x100dbaa0
663// VTABLE: BETA10 0x101c3188
669class Group : public Object {
670public:
677
686 virtual Result SetColor(float r, float g, float b, float a) = 0;
687
693 virtual Result SetTexture(const Texture*) = 0;
694
700 virtual Result GetTexture(Texture*&) = 0;
701
708
714 virtual Result Add(const Group*) = 0;
715
721 virtual Result Add(const MeshBuilder*) = 0;
722
728 virtual Result Remove(const Group*) = 0;
729
735 virtual Result Remove(const MeshBuilder*) = 0;
736
741 virtual Result RemoveAll() = 0;
742
750
751 // SYNTHETIC: BETA10 0x1016a300
752 // Tgl::Group::Group
753
754 // SYNTHETIC: LEGO1 0x100a2510
755 // SYNTHETIC: BETA10 0x1016a370
756 // Tgl::Group::~Group
757
758 // SYNTHETIC: LEGO1 0x100a29c0
759 // SYNTHETIC: BETA10 0x1016a3d0
760 // Tgl::Group::`scalar deleting destructor'
761};
762
768class MeshBuilder : public Object {
769public:
782 virtual Mesh* CreateMesh(
783 unsigned long faceCount,
784 unsigned long vertexCount,
785 float (*pPositions)[3],
786 float (*pNormals)[3],
787 float (*pTextureCoordinates)[2],
788 unsigned long (*pFaceIndices)[3],
789 unsigned long (*pTextureIndices)[3],
790 ShadingModel shadingModel
791 ) = 0;
792
799 virtual Result GetBoundingBox(float min[3], float max[3]) const = 0;
800
805 virtual MeshBuilder* Clone() = 0;
806
807 // SYNTHETIC: BETA10 0x1016b630
808 // Tgl::MeshBuilder::MeshBuilder
809
810 // SYNTHETIC: LEGO1 0x100a27b0
811 // SYNTHETIC: BETA10 0x1016b6a0
812 // Tgl::MeshBuilder::~MeshBuilder
813
814 // SYNTHETIC: LEGO1 0x100a2b10
815 // SYNTHETIC: BETA10 0x1016bb80
816 // Tgl::MeshBuilder::`scalar deleting destructor'
817};
818
819// VTABLE: LEGO1 0x100dbb68
820// VTABLE: BETA10 0x101c3280
826class Texture : public Object {
827public:
836 virtual Result SetTexels(int width, int height, int bitsPerTexel, void* pTexels) = 0;
837
844 virtual void FillRowsOfTexture(int y, int height, void* pBuffer) = 0;
845
852 virtual Result Changed(int texelsChanged, int paletteChanged) = 0;
853
865 int* pWidth,
866 int* pHeight,
867 int* pDepth,
868 void** ppBuffer,
869 int* pPaletteSize,
870 PaletteEntry** ppPalette
871 ) = 0;
872
879 virtual Result SetPalette(int entryCount, PaletteEntry* pEntries) = 0;
880
881 // SYNTHETIC: BETA10 0x1016b520
882 // Tgl::Texture::Texture
883
884 // SYNTHETIC: LEGO1 0x100a2890
885 // SYNTHETIC: BETA10 0x1016b590
886 // Tgl::Texture::~Texture
887
888 // SYNTHETIC: LEGO1 0x100a2b80
889 // SYNTHETIC: BETA10 0x1016bb40
890 // Tgl::Texture::`scalar deleting destructor'
891};
892
893} // namespace Tgl
894
895#endif /* _tgl_h */
[AI] Represents a viewpoint in the 3D scene.
Definition: tgl.h:531
virtual Result SetTransformation(FloatMatrix4 &)=0
[AI] Sets the transformation matrix for the camera.
[AI] Represents a rendering device/context for the Tgl renderer.
Definition: tgl.h:318
virtual Result Update()=0
[AI] Performs a device update/synchronization.
virtual Result SetShadeCount(unsigned long)=0
[AI] Specifies the number of shades for rendering (possibly for palette/ramp mode).
virtual Result SetDither(int)=0
[AI] Enables/disables dithering in the renderer.
virtual void HandlePaint(HDC)=0
[AI] Handles window repaint events (e.g., WM_PAINT) with a device context.
virtual Result SetColorModel(ColorModel)=0
[AI] Sets the color model for rendering.
virtual void HandleActivate(WORD)=0
[AI] Handles window activation events (e.g., WM_ACTIVATE).
virtual unsigned long GetWidth()=0
[AI] Gets the output width in pixels.
virtual Result SetShadingModel(ShadingModel)=0
[AI] Sets the shading model (e.g., Gouraud, flat).
virtual unsigned long GetHeight()=0
[AI] Gets the output height in pixels.
[AI] Scene graph node for parental transforms/color/material/texture; can hold meshes or other groups...
Definition: tgl.h:669
virtual Result SetMaterialMode(MaterialMode)=0
[AI] Sets material mode for the group (e.g., inherit vs.
virtual Result Remove(const Group *)=0
[AI] Removes a child group from this group.
virtual Result GetTexture(Texture *&)=0
[AI] Gets the group's texture (if any).
virtual Result Bounds(D3DVECTOR *, D3DVECTOR *)=0
[AI] Computes an axis-aligned bounding box for the group in world space.
virtual Result Add(const Group *)=0
[AI] Adds a child group to this group.
virtual Result SetColor(float r, float g, float b, float a)=0
[AI] Sets color (and alpha) for all geometry in the group.
virtual Result Remove(const MeshBuilder *)=0
[AI] Removes a mesh builder's mesh from group.
virtual Result SetTexture(const Texture *)=0
[AI] Sets a texture for the entire group.
virtual Result Add(const MeshBuilder *)=0
[AI] Adds a mesh builder's mesh to the group.
virtual Result SetTransformation(FloatMatrix4 &)=0
[AI] Sets the group's transformation matrix.
virtual Result RemoveAll()=0
[AI] Removes all children and meshes from the group.
[AI] Represents a source of lighting in the 3D scene.
Definition: tgl.h:559
virtual Result SetTransformation(FloatMatrix4 &)=0
[AI] Sets the transformation matrix for the light source.
virtual Result SetColor(float r, float g, float b)=0
[AI] Sets the light's color.
[AI] Builder class for assembling mesh data and extracting mesh objects.
Definition: tgl.h:768
virtual Result GetBoundingBox(float min[3], float max[3]) const =0
[AI] Gets the bounding box for the constructed mesh geometry.
virtual MeshBuilder * Clone()=0
[AI] Makes a copy of the mesh builder instance (deep copy).
virtual 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)=0
[AI] Creates a mesh from supplied geometry data.
[AI] Represents a renderable 3D mesh.
Definition: tgl.h:596
virtual Result SetShadingModel(ShadingModel)=0
[AI] Sets the mesh's shading model (e.g., Gouraud, Phong).
virtual Result SetTexture(const Texture *)=0
[AI] Sets the texture to use.
virtual Result SetTextureMappingMode(TextureMappingMode)=0
[AI] Sets how texture coordinates are mapped (linear or perspective correct).
virtual Mesh * DeepClone(MeshBuilder *)=0
[AI] Performs a deep clone—copying all mesh and group data.
virtual Mesh * ShallowClone(MeshBuilder *)=0
[AI] Performs a shallow clone—new wrapper, same mesh data.
virtual Result GetTexture(Texture *&)=0
[AI] Retrieves the currently set texture.
virtual Result SetColor(float r, float g, float b, float a)=0
[AI] Sets the color and transparency for the mesh.
[AI] Utility for mesh data construction and conversion. [AI]
Definition: tgl.h:160
virtual ~Object()
[AI] Destructor; releases resources.
Definition: tgl.h:165
virtual void * ImplementationDataPtr()=0
[AI] Returns a pointer to internal/implementation data, if any.
[AI] Main interface/factory for rendering resources and scene graphs.
Definition: tgl.h:188
virtual Texture * CreateTexture()=0
[AI] Creates an (empty) texture.
virtual Device * CreateDevice(const DeviceDirectDrawCreateData &)=0
[AI] Creates a rendering device using DirectDraw parameters.
virtual MeshBuilder * CreateMeshBuilder()=0
[AI] Creates a new mesh builder.
virtual Result SetTextureDefaultShadeCount(unsigned long)=0
[AI] Sets the default number of shades to generate for textures.
virtual View * CreateView(const Device *, const Camera *, unsigned long x, unsigned long y, unsigned long width, unsigned long height)=0
[AI] Creates a rendering view associated with the given device and camera.
virtual Texture * CreateTexture(int width, int height, int bitsPerTexel, const void *pTexels, int pTexelsArePersistent, int paletteEntryCount, const PaletteEntry *pEntries)=0
[AI] Creates a new texture from raw texel buffer and optional palette.
virtual Light * CreateLight(LightType, float r, float g, float b)=0
[AI] Creates a new light of the given type and color.
virtual Camera * CreateCamera()=0
[AI] Creates a new camera.
virtual Result SetTextureDefaultColorCount(unsigned long)=0
[AI] Sets the default number of colors to use for textures (likely palette size).
virtual Device * CreateDevice(const DeviceDirect3DCreateData &)=0
[AI] Creates a rendering device using Direct3D parameters.
virtual Group * CreateGroup(const Group *pParent=0)=0
[AI] Creates a new group (scene graph node), optionally parented.
[AI] Represents a GPU or system memory texture for use in rendering.
Definition: tgl.h:826
virtual Result SetTexels(int width, int height, int bitsPerTexel, void *pTexels)=0
[AI] Sets the texture image data (texels and size).
virtual void FillRowsOfTexture(int y, int height, void *pBuffer)=0
[AI] Fills lines of texel data in the image buffer.
virtual Result Changed(int texelsChanged, int paletteChanged)=0
[AI] Notifies of changes to texels or palette.
virtual Result SetPalette(int entryCount, PaletteEntry *pEntries)=0
[AI] Assigns a palette to the texture.
virtual Result GetBufferAndPalette(int *pWidth, int *pHeight, int *pDepth, void **ppBuffer, int *pPaletteSize, PaletteEntry **ppPalette)=0
[AI] Retrieves texture buffer and palette for external access.
[AI] Represents a rendering viewport and drawing context.
Definition: tgl.h:397
virtual Result Render(const Group *)=0
[AI] Renders a group hierarchy to the view.
virtual Result SetCamera(const Camera *)=0
[AI] Sets the camera used by the view.
virtual Result SetBackgroundColor(float r, float g, float b)=0
[AI] Sets the background color for the view.
virtual Result Pick(unsigned long x, unsigned long y, const Group **ppGroupsToPickFrom, int groupsToPickFromCount, const Group **&rppPickedGroups, int &rPickedGroupCount)=0
[AI] Picks the group under screen coordinates, searching specific group trees.
virtual Result Remove(const Light *)=0
[AI] Removes a light from the view.
virtual Result TransformScreenToWorld(const float screen[4], float world[3])=0
[AI] Converts screen coordinate back to world position.
virtual Result SetProjection(ProjectionType)=0
[AI] Sets projection type for the view (e.g., perspective/orthographic).
virtual Result TransformWorldToScreen(const float world[3], float screen[4])=0
[AI] Transforms a world-space position to screen coordinates.
virtual Result SetFrustrum(float frontClippingDistance, float backClippingDistance, float degrees)=0
[AI] Sets front and back clipping planes and view field in degrees.
virtual Result Clear()=0
[AI] Clears the current contents of the view.
virtual Result Add(const Light *)=0
[AI] Adds a light to the view for rendering.
virtual Result ForceUpdate(unsigned long x, unsigned long y, unsigned long width, unsigned long height)=0
[AI] Forces update/redraw of a region in the view.
virtual Result GetBackgroundColor(float *r, float *g, float *b)=0
[AI] Retrieves the current background color.
[AI] Namespace containing all classes related to the 3D graphics abstraction/rendering engine.
Renderer * CreateRenderer()
[AI] Instantiates and returns a new Tgl::Renderer implementation.
Definition: renderer.cpp:8
int Succeeded(Result result)
[AI] Returns whether a Tgl::Result indicates success.
Definition: tgl.h:136
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
@ PerspectiveCorrect
[AI] Perspective-correct mapping (higher quality). [AI]
Definition: tgl.h:67
@ Linear
[AI] Linear interpolation (faster, less accurate). [AI]
Definition: tgl.h:66
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
@ RGB
[AI] Uses direct RGB color values. [AI]
Definition: tgl.h:21
@ Ramp
[AI] Uses a color ramp (palette/indexed color). [AI]
Definition: tgl.h:20
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
@ FromMesh
[AI] Use material specified at the mesh level. [AI]
Definition: tgl.h:78
@ FromFrame
[AI] Use material from the current frame. [AI]
Definition: tgl.h:77
@ FromParent
[AI] Inherit material from parent. [AI]
Definition: tgl.h:76
[AI] Contains Direct3D-specific data needed to create a rendering device.
Definition: tgl.h:97
IDirect3D2 * m_pDirect3D
[AI] Direct3D interface pointer. [AI]
Definition: tgl.h:98
IDirect3DDevice2 * m_pDirect3DDevice
[AI] Direct3D device interface pointer. [AI]
Definition: tgl.h:99
[AI] Contains DirectDraw-specific params for creating a rendering device.
Definition: tgl.h:107
IDirectDrawSurface * m_pFrontBuffer
[AI] Primary output surface. [AI]
Definition: tgl.h:111
IDirectDrawSurface * m_pBackBuffer
[AI] Secondary (offscreen) buffer for flipping/rendering. [AI]
Definition: tgl.h:112
IDirectDraw * m_pDirectDraw
[AI] DirectDraw interface pointer. [AI]
Definition: tgl.h:110
const GUID * m_driverGUID
[AI] GUID of the DirectDraw driver to use. [AI]
Definition: tgl.h:108
HWND m_hWnd
[AI] Window handle for display output. [AI]
Definition: tgl.h:109
[AI] Represents a single color entry in a palette.
Definition: tgl.h:86
unsigned char m_blue
[AI] Blue component. [AI]
Definition: tgl.h:89
unsigned char m_green
[AI] Green component. [AI]
Definition: tgl.h:88
unsigned char m_red
[AI] Red component. [AI]
Definition: tgl.h:87