librw/src/render.cpp

97 lines
2.1 KiB
C++
Raw Normal View History

2020-04-30 17:54:38 +02:00
#include <stdio.h>
2017-08-29 10:12:56 +02:00
#include "rwbase.h"
#include "rwplg.h"
#include "rwengine.h"
2021-03-03 02:00:52 +01:00
#include "rwrender.h"
2017-08-29 10:12:56 +02:00
namespace rw {
void SetRenderState(int32 state, uint32 value){
engine->device.setRenderState(state, (void*)(uintptr)value); }
void SetRenderStatePtr(int32 state, void *value){
2017-08-29 10:12:56 +02:00
engine->device.setRenderState(state, value); }
uint32 GetRenderState(int32 state){
return (uint32)(uintptr)engine->device.getRenderState(state); }
void *GetRenderStatePtr(int32 state){
2017-08-29 10:12:56 +02:00
return engine->device.getRenderState(state); }
// Im2D
namespace im2d {
float32 GetNearZ(void) { return engine->device.zNear; }
float32 GetFarZ(void) { return engine->device.zFar; }
2017-08-29 10:12:56 +02:00
void
RenderLine(void *verts, int32 numVerts, int32 vert1, int32 vert2)
{
engine->device.im2DRenderLine(verts, numVerts, vert1, vert2);
}
void
RenderTriangle(void *verts, int32 numVerts, int32 vert1, int32 vert2, int32 vert3)
{
engine->device.im2DRenderTriangle(verts, numVerts, vert1, vert2, vert3);
}
void
2017-08-29 10:12:56 +02:00
RenderIndexedPrimitive(PrimitiveType type, void *verts, int32 numVerts, void *indices, int32 numIndices)
{
engine->device.im2DRenderIndexedPrimitive(type, verts, numVerts, indices, numIndices);
}
void
RenderPrimitive(PrimitiveType type, void *verts, int32 numVerts)
{
engine->device.im2DRenderPrimitive(type, verts, numVerts);
}
2017-08-29 10:12:56 +02:00
}
// Im3D
namespace im3d {
void
2020-05-06 09:22:29 +02:00
Transform(void *vertices, int32 numVertices, Matrix *world, uint32 flags)
2017-08-29 10:12:56 +02:00
{
2020-05-06 09:22:29 +02:00
engine->device.im3DTransform(vertices, numVertices, world, flags);
2017-08-29 10:12:56 +02:00
}
void
2021-03-03 02:00:52 +01:00
RenderLine(int32 vert1, int32 vert2)
{
int16 indices[2];
indices[0] = vert1;
indices[1] = vert2;
RenderIndexedPrimitive(rw::PRIMTYPELINELIST, indices, 2);
}
void
RenderTriangle(int32 vert1, int32 vert2, int32 vert3)
{
int16 indices[3];
indices[0] = vert1;
indices[1] = vert2;
indices[2] = vert3;
RenderIndexedPrimitive(rw::PRIMTYPETRILIST, indices, 3);
}
void
2020-04-24 19:06:11 +02:00
RenderPrimitive(PrimitiveType primType)
2017-08-29 10:12:56 +02:00
{
2020-04-24 19:06:11 +02:00
engine->device.im3DRenderPrimitive(primType);
}
void
RenderIndexedPrimitive(PrimitiveType primType, void *indices, int32 numIndices)
{
engine->device.im3DRenderIndexedPrimitive(primType, indices, numIndices);
2017-08-29 10:12:56 +02:00
}
void
End(void)
{
engine->device.im3DEnd();
}
}
2017-08-29 14:05:45 +02:00
}