JNIEXPORT void JNICALL Java_org_lwjgl_opengl_EXTShaderImageLoadStore_nglMemoryBarrierEXT(JNIEnv *env, jclass clazz, jint barriers, jlong function_pointer) { glMemoryBarrierEXTPROC glMemoryBarrierEXT = (glMemoryBarrierEXTPROC)((intptr_t)function_pointer); glMemoryBarrierEXT(barriers); }
void ABufferGeometryGLProcessor::geometryRender() { ABUFFER_PROFILE("Total-Time"); // tempImage_ = new Image(outport_.getDimensions()); auto tempImage_ = outport_.getEditableData(); ImageGL* tempImageGL = tempImage_->getEditableRepresentation<ImageGL>(); ivec2 dim = outport_.getDimensions(); bool abufferEnabled = abuffer_.settings_.abufferEnable_.get(); // abuffer initialization if (abufferEnabled) { ABUFFER_PROFILE("Initialize-abuffer"); abuffer_.abuffer_initABuffer(dim, updateRequried_); LGL_ERROR; abuffer_.abuffer_addShaderDefinesAndBuild(&abuffer_.resolveABufferShader_); LGL_ERROR; ABUFFER_PROFILE("Reset-abuffer"); abuffer_.aBuffer_resetLinkList(tempImageGL); updateRequried_ = false; } abuffer_.abuffer_addShaderDefinesAndBuild(&abufferGeometryShader_); // Rendering { ABUFFER_PROFILE("Rendering"); tempImageGL = tempImage_->getEditableRepresentation<ImageGL>(); utilgl::activateAndClearTarget(outport_); // initialize shader abufferGeometryShader_.activate(); // LGL_ERROR; utilgl::setShaderUniforms(abufferGeometryShader_, camera_, "camera_"); // LGL_ERROR; utilgl::setShaderUniforms(abufferGeometryShader_, lightingProperty_, "light_"); // LGL_ERROR; if (abufferEnabled) { abuffer_.abuffer_addUniforms(&abufferGeometryShader_); abufferGeometryShader_.setUniform("globalTransparency_", transparency_.get()); } utilgl::GlBoolState depthTest(GL_DEPTH_TEST, true); utilgl::CullFaceState culling(cullFace_.get()); utilgl::PolygonModeState polygon(polygonMode_.get(), renderLineWidth_, renderPointSize_); for (auto& drawer : drawers_) { utilgl::setShaderUniforms(abufferGeometryShader_, *(drawer.second->getGeometry()), "geometry_"); drawer.second->draw(); } abufferGeometryShader_.deactivate(); utilgl::deactivateCurrentTarget(); glMemoryBarrierEXT(GL_ALL_BARRIER_BITS_EXT); } // abuffer resolve if (abufferEnabled) { ABUFFER_PROFILE("Resolving-abuffer"); utilgl::activateAndClearTarget(outport_); abuffer_.aBuffer_resolveLinkList(tempImageGL); utilgl::deactivateCurrentTarget(); } }