문제

OpenGL ES 1.1 코드에서 Photoshop 블렌딩 모드 ( "Multiply", "Screen"등)를 모방해야합니다.없이 셰이더).

이 작업을 수행하는 방법에 대한 문서가 있습니다 ~와 함께 HLSL :

최소한 작동 화면 모드가 필요합니다.

내가 볼 수있는 고정 파이프 라인에 구현이 있습니까?

도움이 되었습니까?

해결책

대부분의 Photoshop Blend-Modes는 Porter-Duff Blendmodes를 기반으로합니다.

이를 위해서는 모든 이미지 (텍스처, 렌더 버퍼)가 컬러 스페이스에 있어야합니다. 이것은 일반적으로 모든 픽셀 값에 알파 값을 곱하기 전에 텍스처에 저장하여 수행됩니다. 예를 들어, 완전 투명한 픽셀은 비 배경의 색상 공간에서 검은 색처럼 보입니다. 이 컬러 공간에 익숙하지 않은 경우 웹에서 1 ~ 2 시간을 읽습니다. 그것은 깔끔하고 좋은 개념이며 Photoshop과 같은 구성에 필요합니다.

어쨌든 - 해당 형식의 이미지가 있으면 다음을 사용하여 화면을 활성화 할 수 있습니다.

glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_COLOR)

OpenGL | es 파이프 라인에서는 전체 곱셈 모드가 불가능합니다. 완전한 불투명 한 픽셀로 만 작업하는 경우 다음을 사용하여 가짜를 할 수 있습니다.

glBlendFunc(GL_ZERO, GL_SRC_COLOR)

텍스처와 프레임 버퍼의 투명 픽셀의 결과는 잘못됩니다.

다른 팁

당신은 이것을 시도해야합니다 :

glBlendFunc(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA)

이것은 iPhone / Opengl es에서 나에게 곱하는 것처럼 보입니다.

시작하기 가장 좋은 곳은 레드 북 재료와 혼합 모드에 대한 장을 읽으십시오. '클래식'OpenGl 블렌딩 기능의 작동 방식에 대한 매우 포괄적이고 명확한 설명이 있습니다.

나는 이것을 사용하여 다음을 발견했다 :

glDepthFun( GL_LEQUAL);

모두 화면 효과를 얻어야했지만 적어도 내 프로젝트에서 잘 작동했습니다.

이것이 왜 작동하는지 잘 모르겠지만 누군가가 알고 있다면 공유하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top