void cxSpriteDraw(cxAny pview) { cxSprite this = pview; CX_RETURN(this->texture == NULL); cxSpriteBindTexture(pview); cxOpenGLActiveAttribs(cxVertexAttribFlagPosColorTex); glVertexAttribPointer(cxVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, sizeof(cxVec3f), &this->vbox); glVertexAttribPointer(cxVertexAttribTexcoord, 2, GL_FLOAT, GL_FALSE, sizeof(cxTex2f), &this->tbox); glVertexAttribPointer(cxVertexAttribColor, 4, GL_FLOAT, GL_FALSE, sizeof(cxColor4f), &this->cbox); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); }
void cxSpriteDraw(cxAny pview) { cxSprite this = pview; CX_RETURN(this->texture == NULL); cxOpenGLSetBlendFactor(this->sfactor, this->dfactor); cxShaderUsing(this->shader,this->texture->isAtlas); cxTextureBind(this->texture); cxOpenGLActiveAttribs(cxVertexAttribFlagPosColorTex); glVertexAttribPointer(cxVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, sizeof(cxVec3f), &this->vbox); glVertexAttribPointer(cxVertexAttribTexcoord, 2, GL_FLOAT, GL_FALSE, sizeof(cxTexCoord2f), &this->tbox); glVertexAttribPointer(cxVertexAttribColor, 4, GL_FLOAT, GL_FALSE, sizeof(cxColor4f), &this->cbox); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); }
static void cxAtlasVBODraw(cxAny pview) { cxAtlas this = pview; glBindBuffer(GL_ARRAY_BUFFER, this->vboid[0]); if (this->isDirty){ glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(cxBoxPoint) * this->number, this->boxes); this->isDirty = false; } cxOpenGLActiveAttribs(cxVertexAttribFlagPosColorTex); glVertexAttribPointer(cxVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, sizeof(cxPoint), (GLvoid*)offsetof(cxPoint, vertices)); glVertexAttribPointer(cxVertexAttribTexcoord, 2, GL_FLOAT, GL_FALSE, sizeof(cxPoint), (GLvoid*)offsetof(cxPoint, texcoords)); glVertexAttribPointer(cxVertexAttribColor, 4, GL_FLOAT, GL_FALSE, sizeof(cxPoint), (GLvoid*)offsetof(cxPoint, colors)); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, this->vboid[1]); glDrawElements(GL_TRIANGLES, (GLsizei)this->number*6, GL_UNSIGNED_SHORT, (GLvoid*)NULL); glBindBuffer(GL_ARRAY_BUFFER, 0); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); }