irrlicht/source/Irrlicht.NET/IMaterialRenderer.h

84 lines
2.9 KiB
C++

// Copyright (C) 2002-2006 Nikolaus Gebhardt
// This file is part of the "Irrlicht Engine".
// For conditions of distribution and use, see copyright notice in irrlicht.h
#pragma once
using namespace System;
#pragma unmanaged
#include "..\\..\\include\\irrlicht.h"
#pragma managed
#include "Material.h"
namespace Irrlicht
{
namespace Video
{
public __gc class IVideoDriver;
//// <summary>
/// Interface for material rendering. Can be used to extend the engine with new materials.
/// Refer to IVideoDriver::addMaterialRenderer() for more informations on how to extend the engine
/// with new materials.<summary>
///</summary>
public __gc class IMaterialRendererServices
{
public:
IMaterialRendererServices( irr::video::IMaterialRendererServices* realServices,
Irrlicht::Video::IVideoDriver* videoDriver );
/// <summary>
/// Can be called by an IMaterialRenderer to make its work easier.
/// Sets all basic renderstates if needed.
/// Basic render states are diffuse, ambient, specular, and emissive color, specular power,
/// bilinear and trilinear filtering, wireframe mode,
/// grouraudshading, lighting, zbuffer, zwriteenable, backfaceculling and fog enabling.
/// </summary>
void SetBasicRenderStates( Material material, Material lastMaterial, bool resetAllRenderstates );
/// <summary>
/// Sets a constant for the vertex shader based on a name. This can be used if you used
/// a high level shader language like GLSL or HLSL to create a shader.
/// </summary>
bool SetVertexShaderConstant( String* name, float floats __gc [], int count );
/// <summary>
/// Sets a vertex shader constant. Can be used if you created a shader using
/// pixel/vertex shader assembler or ARB_fragment_program or ARB_vertex_program.
/// </summary>
void SetVertexShaderConstant( float data __gc [], int startRegister, int constantAmount );
/// <summary>
/// Sets a constant for the pixel shader based on a name. This can be used if you used
/// a high level shader language like GLSL or HLSL to create a shader.
/// </summary>
bool SetPixelShaderConstant( String* name, float floats __gc [], int count );
/// <summary>
/// Sets a pixel shader constant. Can be used if you created a shader using
/// pixel/vertex shader assembler or ARB_fragment_program or ARB_vertex_program.
/// </summary>
void SetPixelShaderConstant( float data __gc [], int startRegister, int constantAmount );
/// <summary>
/// Returns the video driver.
/// </summary>
__property Irrlicht::Video::IVideoDriver* get_VideoDriver();
inline irr::video::IMaterialRendererServices* getMaterialRendererServices()
{
return (irr::video::IMaterialRendererServices*)materialRendererServices;
}
protected:
irr::video::IMaterialRendererServices* materialRendererServices;
Irrlicht::Video::IVideoDriver* TheVideoDriver;
};
}
}