void Mesh::onDraw() { if (mIBO) { /* Perform index drawing */ glDrawElements(mRenderMode, mIBO->getElements(), GL_UNSIGNED_INT, reinterpret_cast<GLvoid*>(0)); FLOG_CHECK("glDrawElements failed"); } else { /* Perform array drawing */ glDrawArrays(mRenderMode, 0, mVBO->getElements()); FLOG_CHECK("glDrawArrays failed"); } }
GLuint TQuery<target>::getResultAsync(GLuint resultIfNotAvailable, GLuint id) { GLuint result; glGetQueryObjectuiv(mHandles[id], GL_QUERY_RESULT_AVAILABLE, &result); FLOG_CHECK("Could not get querry result state"); if (result) { glGetQueryObjectuiv(mHandles[id], GL_QUERY_RESULT, &result); FLOG_CHECK("Could not get query async result"); return result; } else { return resultIfNotAvailable; } }
void Framebuffer::attachTexture2D( GLenum attachment, GLenum target, GLuint textureHandle) { glFramebufferTexture2D(GL_FRAMEBUFFER, attachment, target, textureHandle, 0); FLOG_CHECK("Attach texture to framebuffer failed"); }
void Framebuffer::attachTexture2DDraw( GLenum attachment, GLenum target, GLuint textureHandle) { glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, attachment, target, textureHandle, 0); FLOG_CHECK( "attachTexture2DDraw failed. attachment: 0x%x, target: 0x%x, handle: 0x%x", attachment, target, textureHandle); }
void Mesh::drawOcclusionBox(ICamera& camera) { mProgramOQ->use(); core::Uniform::push(mULCMVPOcclusion, camera.getViewProjection() * mPhysicsMMC * mOcclusionMatrix); mOcclusionQuery.begin(); glDrawArrays(mRenderMode, 0, gOQVertices); FLOG_CHECK("drawOcclusionBox failed"); mOcclusionQuery.end(); core::Program::disusePrograms(); }
void Texture2D::sendData(Texture2DFileData data) { if (data) { mFile->mData = data; } if (mFile->mConfig.mCompression) { glCompressedTexImage2D(mTarget, mFile->mConfig.mMipmapsLevel, mFile->mHeader.mInternalFormat, mFile->mHeader.mWidth, mFile->mHeader.mHeight, mFile->mConfig.mBorder, mFile->mConfig.mCompressionSize, (GLubyte*) mFile->mData); } else { glTexImage2D(mTarget, mFile->mConfig.mMipmapsLevel, mFile->mHeader.mInternalFormat, mFile->mHeader.mWidth, mFile->mHeader.mHeight, mFile->mConfig.mBorder, mFile->mHeader.mFormat, mFile->mHeader.mType, (GLubyte*) mFile->mData); } FLOG_CHECK("send data"); }
void TQuery<target>::end() { glEndQuery(mTarget); FLOG_CHECK("Could not end query"); }
void Framebuffer::bindForWriting(GLuint id) const { glBindFramebuffer(GL_DRAW_FRAMEBUFFER, mHandles[id]); FLOG_CHECK("glBindFramebuffer GL_DRAW_FRAMEBUFFER"); }
TQuery<target>::~TQuery() { glDeleteQueries(mHowMany, mHandles); FLOG_CHECK("Could not delete query"); }
void TQuery<target>::begin(GLuint id) { glBeginQuery(mTarget, mHandles[id]); FLOG_CHECK("Could not begin query"); }
void VertexArray::unbind() { glBindVertexArray(0); FLOG_CHECK("ould unbind the VAO"); }
Sampler::Sampler(GLint textureUnit, GLuint howMany) : GLObject(howMany), mTextureUnit(textureUnit) { glGenSamplers(mHowMany, mHandles); FLOG_CHECK("ERROR: Could not generate sampler -> ID"); }
void Texture2D::generateMipMaps() { if (mFile->mConfig.mMipmaps) { glGenerateMipmap(mTarget); FLOG_CHECK("generateMipMaps"); } }
VertexArray::~VertexArray() { glDeleteVertexArrays(mHowMany, mHandles); FLOG_CHECK("Could not delete the VAO"); }
void Sampler::setParameter(Parameter parameter, GLuint id) { glSamplerParameteri(mHandles[id], parameter.first, parameter.second); FLOG_CHECK("setParameter"); }
void Sampler::reload() { glGenSamplers(mHowMany, mHandles); FLOG_CHECK("reload"); }
void Sampler::setParameter(GLenum parameter, GLenum value, GLuint id) { glSamplerParameteri(mHandles[id], parameter, value); FLOG_CHECK("setParameter: 0x%x", parameter); }
void Sampler::unbind(GLuint id) { glBindSampler(0, mHandles[id]); FLOG_CHECK("Could not bind the VAO"); }
void Sampler::bind(GLuint id) { glBindSampler(mTextureUnit, mHandles[id]); FLOG_CHECK("Could not bind the Sampler"); }
GLuint TQuery<target>::getResultSync(GLuint id) { GLuint result; glGetQueryObjectuiv(mHandles[id], GL_QUERY_RESULT, &result); FLOG_CHECK("Could not get querry sync result"); return result; }
void Framebuffer::bindForReading(GLuint id) const { glBindFramebuffer(GL_READ_FRAMEBUFFER, mHandles[id]); FLOG_CHECK("glBindFramebuffer GL_READ_FRAMEBUFFER"); }
VertexArray::VertexArray(GLuint howMany) : GLObject(howMany) { glGenVertexArrays(mHowMany, mHandles); FLOG_CHECK("Could not generate the VAO"); }
void TQuery<target>::reload() { glGenQueries(mHowMany, mHandles); FLOG_CHECK("reload"); }
void VertexArray::bind(GLuint id) { glBindVertexArray(mHandles[id]); FLOG_CHECK("Could not bind the VAO"); }
TQuery<target>::TQuery(GLsizei howMany) : GLObject(howMany) { glGenQueries(mHowMany, mHandles); FLOG_CHECK("Could not create query"); }
void VertexArray::reload() { glGenVertexArrays(mHowMany, mHandles); FLOG_CHECK("reload"); }
void Framebuffer::reload() { glGenFramebuffers(mHowMany, mHandles); FLOG_CHECK("Reloading"); }