的OpenGL我遇到以下情況傳來:拼接的多重紋理/一起幀使用Kinect的
- 我有一個Kinect的攝像頭和我繼續服用幀(但只有當用戶按下一個鍵將它們存儲) 。
- 我使用freenect庫來檢索框架的深度和顏色(我對骨架跟蹤或類似的東西不感興趣)。
- 對於我使用隨附freenect library
從Kinect傳感器檢索所述空間數據,在glpclview例如後glpclview例的單個幀,當前幀就被繪製這樣的:
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_SHORT, 0, xyz);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(3, GL_SHORT, 0, xyz);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, gl_rgb_tex);
glTexImage2D(GL_TEXTURE_2D, 0, 3, 640, 480, 0, GL_RGB, GL_UNSIGNED_BYTE, rgb);
glPointSize(2.0f);
glDrawElements(GL_POINTS, 640*480, GL_UNSIGNED_INT, indices);
其中
static unsigned int indices[480][640];
static short xyz[480][640][3];
char *rgb = 0;
short *depth = 0;
其中:
- RGB是對於當前幀的顏色信息
- 深度是
XYZ被構造爲用於當前幀的深度信息:
XYZ [i] [j ] [0] = j xyz [i] [j] 3 = i xyz [i] [j] 4 = depth [i * 640 + j]
個
指數是(我想只)陣列上保持RGB /深度數據的軌道和構成爲:
指數爲[i] [j] = I * 640 + J
到目前爲止,這麼好,但現在我需要渲染更多,只有一個框架(其中一些旋轉和翻譯一定的角度/偏移量)。我怎樣才能做到這一點? 我曾嘗試增加數組的大小併爲每個新幀保留重新分配內存,但是如何渲染它們? 我應該改變這個當前行到其他?
glTexImage2D(GL_TEXTURE_2D, 0, 3, 640, 480, 0, GL_RGB, GL_UNSIGNED_BYTE, rgb)
如果是這樣,什麼值應該更改640和480,因爲現在XYZ和RGB是640x480x一個contiguos指針(幀數)?
爲了得到更好的ideea,我試圖在最後得到類似於this的東西(機器人除外:D)。
如果有人有更好的想法,提示我應該如何處理這個問題,請讓我知道。
非常感謝您的先生!它給了我一個起點!另外我還遇到了另一個有趣的解決方案:http://manctl.com/products.html – 2012-02-13 18:47:22