@Override public StateRecord createStateRecord(final ContextCapabilities caps) { return new BlendStateRecord(); }
protected static void applyAlphaCoverage(final boolean sampleAlphaToCoverageEnabled, final boolean sampleAlphaToOneEnabled, final BlendStateRecord record, final ContextCapabilities caps) { if (record.isValid()) { if (sampleAlphaToCoverageEnabled != record.sampleAlphaToCoverageEnabled) { if (sampleAlphaToCoverageEnabled) {
public static void apply(final BlendState state) { // ask for the current state record final RenderContext context = ContextManager.getCurrentContext(); final BlendStateRecord record = (BlendStateRecord) context.getStateRecord(StateType.Blend); final ContextCapabilities caps = context.getCapabilities(); context.setCurrentState(StateType.Blend, state); if (state.isEnabled()) { applyBlendEquations(state.isBlendEnabled(), state, record, caps); applyBlendColor(state.isBlendEnabled(), state, record, caps); applyBlendFunctions(state.isBlendEnabled(), state, record, caps); applyTest(state.isTestEnabled(), state, record); applyAlphaCoverage(state.isSampleAlphaToCoverageEnabled(), state.isSampleAlphaToOneEnabled(), record, caps); applySampleCoverage(state.isSampleCoverageEnabled(), state, record, caps); } else { // disable blend applyBlendEquations(false, state, record, caps); // disable alpha test applyTest(false, state, record); // disable sample coverage applyAlphaCoverage(false, false, record, caps); applySampleCoverage(false, state, record, caps); } if (!record.isValid()) { record.validate(); } }
final float coverageValue = state.getSampleCoverage(); if (record.isValid()) { if (enabled) { if (!record.sampleCoverageEnabled) {
final float coverageValue = state.getSampleCoverage(); if (record.isValid()) { if (enabled) { if (!record.sampleCoverageEnabled) {
@Override public StateRecord createStateRecord(final ContextCapabilities caps) { return new BlendStateRecord(); }
final float coverageValue = state.getSampleCoverage(); if (record.isValid()) { if (enabled) { if (!record.sampleCoverageEnabled) {
protected static void applyAlphaCoverage(final GL gl, final boolean sampleAlphaToCoverageEnabled, final boolean sampleAlphaToOneEnabled, final BlendStateRecord record, final ContextCapabilities caps) { if (record.isValid()) { if (sampleAlphaToCoverageEnabled != record.sampleAlphaToCoverageEnabled) { if (sampleAlphaToCoverageEnabled) {
protected static void applyAlphaCoverage(final boolean sampleAlphaToCoverageEnabled, final boolean sampleAlphaToOneEnabled, final BlendStateRecord record, final ContextCapabilities caps) { if (record.isValid()) { if (sampleAlphaToCoverageEnabled != record.sampleAlphaToCoverageEnabled) { if (sampleAlphaToCoverageEnabled) {
protected static void applyBlendColor(final boolean enabled, final BlendState state, final BlendStateRecord record, final ContextCapabilities caps) { if (enabled) { final boolean applyConstant = state.getDestinationFunctionRGB().usesConstantColor() || state.getSourceFunctionRGB().usesConstantColor() || ((state.getDestinationFunctionAlpha().usesConstantColor() || state.getSourceFunctionAlpha() .usesConstantColor())); if (applyConstant) { final ReadOnlyColorRGBA constant = state.getConstantColor(); if (!record.isValid() || (!record.blendColor.equals(constant))) { GL14C.glBlendColor(constant.getRed(), constant.getGreen(), constant.getBlue(), constant.getAlpha()); record.blendColor.set(constant); } } } }
protected static void applyBlendColor(final boolean enabled, final BlendState state, final BlendStateRecord record, final ContextCapabilities caps) { if (enabled) { final boolean applyConstant = state.getDestinationFunctionRGB().usesConstantColor() || state.getSourceFunctionRGB().usesConstantColor() || (caps.isConstantBlendColorSupported() && (state.getDestinationFunctionAlpha() .usesConstantColor() || state.getSourceFunctionAlpha().usesConstantColor())); if (applyConstant && caps.isConstantBlendColorSupported()) { final ReadOnlyColorRGBA constant = state.getConstantColor(); if (!record.isValid() || (caps.isConstantBlendColorSupported() && !record.blendColor.equals(constant))) { ARBImaging.glBlendColor(constant.getRed(), constant.getGreen(), constant.getBlue(), constant.getAlpha()); record.blendColor.set(constant); } } } }
protected static void applyBlendEquations(final boolean enabled, final BlendState state, final BlendStateRecord record, final ContextCapabilities caps) { if (record.isValid()) { if (enabled) { if (!record.blendEnabled) {
protected static void applyTest(final boolean enabled, final BlendState state, final BlendStateRecord record) { if (record.isValid()) { if (enabled) { if (!record.testEnabled) {
private static void applyBlendColor(final GL gl, final boolean enabled, final BlendState state, final BlendStateRecord record, final ContextCapabilities caps) { if (enabled) { final boolean applyConstant = state.getDestinationFunctionRGB().usesConstantColor() || state.getSourceFunctionRGB().usesConstantColor() || (caps.isConstantBlendColorSupported() && (state.getDestinationFunctionAlpha() .usesConstantColor() || state.getSourceFunctionAlpha().usesConstantColor())); if (applyConstant && caps.isConstantBlendColorSupported()) { final ReadOnlyColorRGBA constant = state.getConstantColor(); if (!record.isValid() || (caps.isConstantBlendColorSupported() && !record.blendColor.equals(constant))) { if (gl.isGL2ES2()) { gl.getGL2ES2().glBlendColor(constant.getRed(), constant.getGreen(), constant.getBlue(), constant.getAlpha()); } record.blendColor.set(constant); } } } }
protected static void applyBlendFunctions(final boolean enabled, final BlendState state, final BlendStateRecord record, final ContextCapabilities caps) { if (record.isValid()) { if (enabled) { final int glSrcRGB = getGLSrcValue(state.getSourceFunctionRGB(), caps);
private static void applyBlendEquations(final GL gl, final boolean enabled, final BlendState state, final BlendStateRecord record, final ContextCapabilities caps) { if (record.isValid()) { if (enabled) { if (!record.blendEnabled) {
protected static void applyBlendFunctions(final boolean enabled, final BlendState state, final BlendStateRecord record, final ContextCapabilities caps) { if (record.isValid()) { if (enabled) { final int glSrcRGB = getGLSrcValue(state.getSourceFunctionRGB(), caps);
protected static void applyBlendEquations(final boolean enabled, final BlendState state, final BlendStateRecord record, final ContextCapabilities caps) { if (record.isValid()) { if (enabled) { if (!record.blendEnabled) {