EXTERN_C_ENTER

JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL40_nglBlendEquationi(JNIEnv *__env, jclass clazz, jint buf, jint mode, jlong __functionAddress) {
	glBlendEquationiPROC glBlendEquationi = (glBlendEquationiPROC)(intptr_t)__functionAddress;
	UNUSED_PARAMS(__env, clazz)
	glBlendEquationi(buf, mode);
}
Пример #2
0
static int BlendEquation(lua_State *L)
    {
    GLuint buf;
    GLenum mode, alpha;

    if(lua_isinteger(L, 1))
        {
        buf = luaL_checkinteger(L, 1);
        mode = checkblendmode(L, 2);
        if(lua_isstring(L, 3))
            {
            alpha = checkblendmode(L,3);
            glBlendEquationSeparatei(buf, mode, alpha);
            }
        else
            glBlendEquationi(buf, mode);
        }
    else
        {
        mode = checkblendmode(L, 1);
        if(lua_isstring(L, 2))
            {
            alpha = checkblendmode(L,2);
            glBlendEquationSeparate(mode, alpha);
            }
        else
            glBlendEquation(mode);
        }
    CheckError(L);
    return 0;
    }
void SceneManager::Render(Camera * camera)
{
	Shader *R2T = Manager::Shader->GetShader("rendertargets");
	R2T->Use();
	camera->BindPosition(R2T->loc_eye_pos);
	camera->BindViewMatrix(R2T->loc_view_matrix);
	camera->BindProjectionMatrix(R2T->loc_projection_matrix);

	glUniform1f(R2T->loc_transparency, 1);
	glDepthMask(GL_TRUE);
	glEnable(GL_DEPTH_TEST);

	list<GameObject*> transparentObjects;

	for (auto *obj : frustumObjects) {
		if (obj->mesh && obj->mesh->meshType == MeshType::STATIC)
		{
			if (obj->renderer->IsTransparent()) {
				transparentObjects.push_back(obj);
			} else {
				obj->Render(R2T);
			}
		}
	}

	// Render transparent objects
	glEnable(GL_BLEND);
	glBlendEquationi(0, GL_FUNC_ADD);
	glBlendFunci(0, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

	for (auto *obj : transparentObjects) {
		if (obj->mesh && obj->mesh->meshType == MeshType::STATIC)
		{
			glUniform1f(R2T->loc_transparency, obj->renderer->GetOpacity());
			obj->Render(R2T);
		}
	}

	glUniform1f(R2T->loc_transparency, 0.3f);
	for (auto *obj : lights) {
		obj->Render(R2T);
	}
	glDisable(GL_BLEND);

	// Render Skinned meshes
	Shader *R2TSk = Manager::Shader->GetShader("r2tskinning");
	if (R2TSk) {
		R2TSk->Use();
		camera->BindPosition(R2TSk->loc_eye_pos);
		camera->BindViewMatrix(R2TSk->loc_view_matrix);
		camera->BindProjectionMatrix(R2TSk->loc_projection_matrix);

		for (auto *obj : frustumObjects) {
			if (obj->mesh && obj->mesh->meshType == MeshType::SKINNED) {
				obj->Render(R2TSk);
			}
		}
	}
}
Пример #4
0
void PipelineImpl::setColorState(GlState& state) const
{
	if(state.m_stateHashes.m_color == m_hashes.m_color)
	{
		return;
	}

	state.m_stateHashes.m_color = m_hashes.m_color;

	if(m_blendEnabled)
	{
		glEnable(GL_BLEND);

		for(U i = 0; i < m_in.m_color.m_attachmentCount; ++i)
		{
			const Attachment& att = m_cache.m_attachments[i];

			glBlendFunci(i, att.m_srcBlendMethod, att.m_dstBlendMethod);
			glBlendEquationi(i, att.m_blendFunction);
			glColorMaski(i,
				att.m_channelWriteMask[0],
				att.m_channelWriteMask[1],
				att.m_channelWriteMask[2],
				att.m_channelWriteMask[3]);

			state.m_colorWriteMasks[i][0] = att.m_channelWriteMask[0];
			state.m_colorWriteMasks[i][1] = att.m_channelWriteMask[1];
			state.m_colorWriteMasks[i][2] = att.m_channelWriteMask[2];
			state.m_colorWriteMasks[i][3] = att.m_channelWriteMask[3];
		}
	}
	else
	{
		glDisable(GL_BLEND);

		for(U i = 0; i < m_in.m_color.m_attachmentCount; ++i)
		{
			const Attachment& att = m_cache.m_attachments[i];

			glColorMaski(i,
				att.m_channelWriteMask[0],
				att.m_channelWriteMask[1],
				att.m_channelWriteMask[2],
				att.m_channelWriteMask[3]);

			state.m_colorWriteMasks[i][0] = att.m_channelWriteMask[0];
			state.m_colorWriteMasks[i][1] = att.m_channelWriteMask[1];
			state.m_colorWriteMasks[i][2] = att.m_channelWriteMask[2];
			state.m_colorWriteMasks[i][3] = att.m_channelWriteMask[3];
		}
	}
}
JNIEXPORT void JNICALL Java_org_lwjgl_opengles_GLES32_glBlendEquationi(JNIEnv *__env, jclass clazz, jint buf, jint mode) {
    glBlendEquationiPROC glBlendEquationi = (glBlendEquationiPROC)tlsGetFunction(329);
    UNUSED_PARAM(clazz)
    glBlendEquationi(buf, mode);
}
Пример #6
0
//! glBlendEquationi wrapper. May throw.
inline void blendEquationi(GLuint const buf, GLenum const mode) {
  glBlendEquationi(buf, mode);
  checkError("glBlendEquationi");
}