#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); }