WindowsBuffer::~WindowsBuffer() { glDeleteBuffers(getNumBuffers(), _bufferIDs); delete[] _bufferIDs; for (int i = 0; i < getNumBuffers(); i++) { if (_fences[i] != 0) { glDeleteSync(_fences[i]); } } delete [] _fences; }
void NUKinectView::NUDrawGLScene() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glEnable(GL_TEXTURE_2D); for (int i = 0; i < getNumBuffers(); i++) { if (!buffer_ptrs[i]) { continue; } const int col = i % numCols; const int row = i / numCols; glBindTexture(GL_TEXTURE_2D, gl_depth_tex); _mutex.lock(); glTexImage2D(GL_TEXTURE_2D, 0, 3, 640, 480, 0, GL_RGB, GL_UNSIGNED_BYTE, buffer_ptrs[i]); _mutex.unlock(); glBegin(GL_TRIANGLE_FAN); glColor4f(255.0f, 255.0f, 255.0f, 255.0f); glTexCoord2f(0, 0); glVertex3f(0+col*640,0+row*480,0); glTexCoord2f(1, 0); glVertex3f(640+col*640,0+row*480,0); glTexCoord2f(1, 1); glVertex3f(640+col*640,480+row*480,0); glTexCoord2f(0, 1); glVertex3f(0+col*640,480+row*480,0); glEnd(); } // for i glutSwapBuffers(); }
ITransferBuffer* TransferBufferManager::create(const TransferBufferManagerKey& key) { if (key.isEmpty()) { UAVCAN_ASSERT(0); return UAVCAN_NULLPTR; } remove(key); TransferBufferManagerEntry* tbme = TransferBufferManagerEntry::instantiate(allocator_, max_buf_size_); if (tbme == UAVCAN_NULLPTR) { return UAVCAN_NULLPTR; // Epic fail. } buffers_.insert(tbme); UAVCAN_TRACE("TransferBufferManager", "Buffer created [num=%u], %s", getNumBuffers(), key.toString().c_str()); if (tbme != UAVCAN_NULLPTR) { UAVCAN_ASSERT(tbme->isEmpty()); tbme->reset(key); } return tbme; }
int NUKinectView::setBuffer(char * buffer_ptr, const NUBufferSpec & spec, int buffer_ind) { if (buffer_ind >= getNumBuffers()) { return 1; } _mutex.lock(); buffer_ptrs[buffer_ind] = buffer_ptr; //buffer_specs[buffer_ind] = spec; _mutex.unlock(); return 0; }
bool TransferBufferManager::isEmpty() const { return getNumBuffers() == 0; }