Class TexturedTrianglesProxy
Defined in File TexturedTrianglesProxy.h
Nested Relationships
Nested Types
Inheritance Relationships
Base Type
public mrpt::opengl::TexturedTrianglesProxyBase(Class TexturedTrianglesProxyBase)
Class Documentation
-
class TexturedTrianglesProxy : public mrpt::opengl::TexturedTrianglesProxyBase
GPU-side proxy for rendering textured triangle meshes.
This proxy handles rendering of any CVisualObject that uses textured triangle shaders, such as:
CTexturedPlane
CMesh (with texture)
CMeshFast (with texture)
CSetOfTexturedTriangles
Any object derived from VisualObjectParams_TexturedTriangles
The proxy manages:
Vertex buffer (3D triangle vertices)
Normal buffer (per-vertex normals for lighting)
Color buffer (per-vertex RGBA colors)
Texture coordinate buffer (UV coordinates)
Texture object (diffuse map)
VAO for efficient attribute binding
Textured rendering features:
Phong lighting with texture modulation
Optional transparency via alpha channel or separate alpha texture
Texture filtering (nearest/linear interpolation)
Mipmapping support
Face culling modes
Shadow casting
Shader selection:
Normal rendering: TEXTURED_TRIANGLES_LIGHT or TEXTURED_TRIANGLES_NO_LIGHT
Shadow 1st pass: TEXTURED_TRIANGLES_SHADOW_1ST
Shadow 2nd pass: TEXTURED_TRIANGLES_SHADOW_2ND
RenderableProxy Interface Implementation
-
virtual void compile(const mrpt::viz::CVisualObject *sourceObj) override
Initial compilation: uploads object data to GPU.
This is called once when the proxy is first created. It should:
Create OpenGL buffers (VBOs, VAOs, textures)
Upload initial vertex/color/normal/texture data
Cache any frequently-used values
Note
Must be called from OpenGL context thread
Note
After this call, the proxy should be ready to render
- Parameters:
sourceObj – The abstract viz object (read-only access)
-
virtual void updateBuffers(const mrpt::viz::CVisualObject *sourceObj) override
Incremental update: refreshes GPU buffers with changed data.
This is called when the source object’s dirty flag is set (hasToUpdateBuffers() returns true). It should:
Re-upload only the changed data (vertices, colors, etc.)
Be as efficient as possible (don’t recompile everything)
Note
Must be called from OpenGL context thread
Note
Default implementation calls compile() - override for efficiency
- Parameters:
sourceObj – The abstract viz object (read-only access)
-
virtual void render(const RenderContext &rc) const override
Renders this object using the provided context.
This is called every frame for visible objects. It should:
Bind appropriate buffers (VAO, VBO, textures)
Set shader uniforms (model matrix, material properties, etc.)
Issue draw calls (glDrawArrays, glDrawElements, etc.)
Note
Must be called from OpenGL context thread
Note
The shader program is already bound when this is called
Note
Common matrices (P, V, M) are already uploaded by CompiledViewport
- Parameters:
rc – Rendering context (shader, matrices, lights)
-
virtual std::vector<shader_id_t> requiredShaders() const override
Returns the list of shader programs this object needs.
Most objects use a single shader, but some may use multiple (e.g., different shaders for shadow map pass vs. normal rendering).
- Returns:
Vector of shader IDs, typically with 1 element
-
inline virtual const char *typeName() const override
Returns a human-readable type name for this proxy. Used for debugging and logging.