12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- #include "2d/CCGLBufferedNode.h"
- GLBufferedNode::GLBufferedNode()
- {
- for(int i = 0; i < BUFFER_SLOTS; i++)
- {
- _bufferObject[i] = 0;
- _bufferSize[i] = 0;
- _indexBufferObject[i] = 0;
- _indexBufferSize[i] = 0;
- }
- }
- GLBufferedNode::~GLBufferedNode()
- {
- for(int i = 0; i < BUFFER_SLOTS; i++)
- {
- if(_bufferSize[i])
- {
- glDeleteBuffers(1, &(_bufferObject[i]));
- }
- if(_indexBufferSize[i])
- {
- glDeleteBuffers(1, &(_indexBufferObject[i]));
- }
- }
- }
- void GLBufferedNode::setGLBufferData(void *buf, GLuint bufSize, int slot)
- {
-
- if(_bufferSize[slot] < bufSize)
- {
- if(_bufferObject[slot])
- {
- glDeleteBuffers(1, &(_bufferObject[slot]));
- }
- glGenBuffers(1, &(_bufferObject[slot]));
- _bufferSize[slot] = bufSize;
- glBindBuffer(GL_ARRAY_BUFFER, _bufferObject[slot]);
- glBufferData(GL_ARRAY_BUFFER, bufSize, buf, GL_DYNAMIC_DRAW);
- }
- else
- {
- glBindBuffer(GL_ARRAY_BUFFER, _bufferObject[slot]);
- glBufferSubData(GL_ARRAY_BUFFER, 0, bufSize, buf);
- }
- }
- void GLBufferedNode::setGLIndexData(void *buf, GLuint bufSize, int slot)
- {
-
- if(_indexBufferSize[slot] < bufSize)
- {
- if(_indexBufferObject[slot])
- {
- glDeleteBuffers(1, &(_indexBufferObject[slot]));
- }
- glGenBuffers(1, &(_indexBufferObject[slot]));
- _indexBufferSize[slot] = bufSize;
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _indexBufferObject[slot]);
- glBufferData(GL_ELEMENT_ARRAY_BUFFER, bufSize, buf, GL_DYNAMIC_DRAW);
- }
- else
- {
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _indexBufferObject[slot]);
- glBufferSubData(GL_ELEMENT_ARRAY_BUFFER, 0, bufSize, buf);
- }
- }
|