83 lines
2.4 KiB
C++
83 lines
2.4 KiB
C++
#include "stdafx.h"
|
|
#include "RTView.h"
|
|
#include "CKRasterizer.h"
|
|
|
|
//-----------------------------------------------------------------------------
|
|
void _PopCreateRenderTargetView(CKContext* context,
|
|
CKParameterOut* res, CKParameterIn* p1, CKParameterIn* p2)
|
|
{
|
|
CK_ID idtex = NULL;
|
|
p1->GetValue(&idtex);
|
|
VxRect rect;
|
|
p2->GetValue(&rect);
|
|
|
|
CKStructHelper ressh(res, FALSE);
|
|
ressh[0]->SetValue(&idtex);
|
|
ressh[1]->SetValue(&rect);
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
void _PopGetTexture(CKContext* context,
|
|
CKParameterOut* res, CKParameterIn* p1, CKParameterIn* p2)
|
|
{
|
|
RTView rtview;
|
|
|
|
memset(&rtview.rect, 0, sizeof(rtview.rect));
|
|
CKStructHelper p1sh(p1->GetRealSource(), FALSE);
|
|
rtview.tex = (CKTexture*)p1sh[0]->GetValueObject();
|
|
p1sh[1]->GetValue(&rtview.rect);
|
|
|
|
if (rtview.tex)
|
|
{
|
|
CK_ID id = rtview.tex->GetID();
|
|
res->SetValue(&id);
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
void _PopGetRectangle(CKContext* context,
|
|
CKParameterOut* res, CKParameterIn* p1, CKParameterIn* p2)
|
|
{
|
|
RTView rtview;
|
|
|
|
memset(&rtview.rect, 0, sizeof(rtview.rect));
|
|
CKStructHelper p1sh(p1->GetRealSource(), FALSE);
|
|
rtview.tex = (CKTexture*)p1sh[0]->GetValueObject();
|
|
p1sh[1]->GetValue(&rtview.rect);
|
|
|
|
res->SetValue(&rtview.rect);
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
void _PopGetTexelSize(CKContext* context,
|
|
CKParameterOut* res, CKParameterIn* p1, CKParameterIn* p2)
|
|
{
|
|
RTView rtview;
|
|
|
|
memset(&rtview.rect, 0, sizeof(rtview.rect));
|
|
CKStructHelper p1sh(p1->GetRealSource(), FALSE);
|
|
rtview.tex = (CKTexture*)p1sh[0]->GetValueObject();
|
|
p1sh[1]->GetValue(&rtview.rect);
|
|
|
|
Vx2DVector texsize = rtview.GetTexelSize();
|
|
res->SetValue(&texsize);
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
void _PopGetRectangleTexcoords(CKContext* context,
|
|
CKParameterOut* res, CKParameterIn* p1, CKParameterIn* p2)
|
|
{
|
|
RTView rtview;
|
|
|
|
memset(&rtview.rect, 0, sizeof(rtview.rect));
|
|
CKStructHelper p1sh(p1->GetRealSource(), FALSE);
|
|
rtview.tex = (CKTexture*)p1sh[0]->GetValueObject();
|
|
p1sh[1]->GetValue(&rtview.rect);
|
|
|
|
CKRST_RSTFAMILY driverFamily = context->GetPlayerRenderContext()->GetRasterizerContext()->m_Driver->m_2DCaps.Family;
|
|
|
|
VxRect rect = rtview.GetRectangleTexCoords(driverFamily == CKRST_DIRECTX ? 0.5f : 0.f);
|
|
res->SetValue(&rect);
|
|
}
|
|
|