MCPcopy Create free account
hub / github.com/OpenNI/OpenNI / TextureMapInit

Function TextureMapInit

Samples/NiViewer/Draw.cpp:162–215  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

160}
161
162void TextureMapInit(XnTextureMap* pTex, int nSizeX, int nSizeY, unsigned int nBytesPerPixel, int nCurX, int nCurY)
163{
164 // check if something changed
165 if (pTex->bInitialized && pTex->OrigSize.X == nSizeX && pTex->OrigSize.Y == nSizeY)
166 {
167 if (pTex->CurSize.X != nCurX || pTex->CurSize.Y != nCurY)
168 {
169 // clear map
170 xnOSMemSet(pTex->pMap, 0, pTex->Size.X * pTex->Size.Y * pTex->nBytesPerPixel);
171
172 // update
173 pTex->CurSize.X = nCurX;
174 pTex->CurSize.Y = nCurY;
175 return;
176 }
177 }
178
179 // free memory if it was allocated
180 if (pTex->pMap != NULL)
181 delete pTex->pMap;
182
183 // update it all
184 pTex->OrigSize.X = nSizeX;
185 pTex->OrigSize.Y = nSizeY;
186 pTex->Size.X = GetPowerOfTwo(nSizeX);
187 pTex->Size.Y = GetPowerOfTwo(nSizeY);
188 pTex->nBytesPerPixel = nBytesPerPixel;
189 pTex->CurSize.X = nCurX;
190 pTex->CurSize.Y = nCurY;
191 pTex->pMap = new unsigned char[pTex->Size.X * pTex->Size.Y * nBytesPerPixel];
192 xnOSMemSet(pTex->pMap, 0, pTex->Size.X * pTex->Size.Y * nBytesPerPixel);
193
194 if (!pTex->bInitialized)
195 {
196 glGenTextures(1, &pTex->nID);
197 glBindTexture(GL_TEXTURE_2D, pTex->nID);
198
199 switch (pTex->nBytesPerPixel)
200 {
201 case 3:
202 pTex->nFormat = GL_RGB;
203 break;
204 case 4:
205 pTex->nFormat = GL_RGBA;
206 break;
207 }
208
209 glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS, GL_TRUE);
210 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
211 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
212
213 pTex->bInitialized = TRUE;
214 }
215}
216
217inline unsigned char* TextureMapGetLine(XnTextureMap* pTex, unsigned int nLine)
218{

Callers 2

drawInitFunction · 0.85
drawFrameFunction · 0.85

Calls 2

GetPowerOfTwoFunction · 0.85
xnOSMemSetFunction · 0.50

Tested by

no test coverage detected