MCPcopy Create free account
hub / github.com/NVIDIAGameWorks/PhysX / RenderTexture

Method RenderTexture

physx/samples/samplebase/RenderTexture.cpp:39–90  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

37using namespace SampleRenderer;
38
39RenderTexture::RenderTexture(Renderer& renderer, PxU32 id, PxU32 width, PxU32 height, const void* data) :
40 mID (id),
41 mTexture (NULL),
42 mOwnsTexture (true)
43{
44 RendererTexture2DDesc tdesc;
45 tdesc.format = RendererTexture2D::FORMAT_B8G8R8A8;
46 tdesc.width = width;
47 tdesc.height = height;
48 tdesc.numLevels = 1;
49/*
50 tdesc.filter;
51 tdesc.addressingU;
52 tdesc.addressingV;
53 tdesc.renderTarget;
54*/
55 PX_ASSERT(tdesc.isValid());
56 mTexture = renderer.createTexture2D(tdesc);
57 PX_ASSERT(mTexture);
58
59 const PxU32 componentCount = 4;
60
61 if(mTexture)
62 {
63 PxU32 pitch = 0;
64 void* buffer = mTexture->lockLevel(0, pitch);
65 PX_ASSERT(buffer);
66 if(buffer)
67 {
68 PxU8* levelDst = (PxU8*)buffer;
69 const PxU8* levelSrc = (PxU8*)data;
70 const PxU32 levelWidth = mTexture->getWidthInBlocks();
71 const PxU32 levelHeight = mTexture->getHeightInBlocks();
72 const PxU32 rowSrcSize = levelWidth * mTexture->getBlockSize();
73 PX_UNUSED(rowSrcSize);
74 PX_ASSERT(rowSrcSize <= pitch); // the pitch can't be less than the source row size.
75 for(PxU32 row=0; row<levelHeight; row++)
76 {
77 // copy per pixel to handle RBG case, based on component count
78 for(PxU32 col=0; col<levelWidth; col++)
79 {
80 *levelDst++ = levelSrc[0];
81 *levelDst++ = levelSrc[1];
82 *levelDst++ = levelSrc[2];
83 *levelDst++ = 0xFF; //alpha
84 levelSrc += componentCount;
85 }
86 }
87 }
88 mTexture->unlockLevel(0);
89 }
90}
91
92RenderTexture::RenderTexture(Renderer& renderer, PxU32 id, RendererTexture2D* texture) :
93 mID (id),

Callers

nothing calls this directly

Calls 8

PX_UNUSEDFunction · 0.85
getWidthInBlocksMethod · 0.80
getHeightInBlocksMethod · 0.80
getBlockSizeMethod · 0.80
isValidMethod · 0.45
createTexture2DMethod · 0.45
lockLevelMethod · 0.45
unlockLevelMethod · 0.45

Tested by

no test coverage detected