2017-11-08 2 views
0

Phong 조명 모델을 통합해야하는 OpenGL 할당 작업을하고 있습니다. 그러나 두 개의 1x3 벡터를 함께 곱하려고 할 때 깜박임이 나타납니다.벡터가 곱해질 때 OpenGL 깜박임

이중 스와핑이 활성화되어 있고 밉맵도 가능합니다.

예 :

컬러 = 질감 (myTextureSampler, UV) .rgb VEC3 * (0.5, 0.5, 0.5);

컬러 = 질감 (myTextureSampler, UV) .rgb VEC3 * (0.9, 0.9, 0.9);

컬러 = 질감 (myTextureSampler, UV) .rgb * 0.9;

컬러 = 질감 (myTextureSampler, UV) .rgb VEC3 * (1.0, 1.0, 1.0);

UPDATE (예 ... 즉, GIF이다)에도이 깜빡이

색 VEC3 = (0.9, 0.1, 0.2);

전체 소스 코드는 opengl-tutorials.org code을 기반으로하지만 (희망)이 질문은 문제의 최소한의 재생과 함께 곧 업데이트됩니다 here입니다.

건배

+1

벡터를 벡터로 곱하면 멤버 곱셈에 의해 멤버가되므로, 생각했던대로 작동하지 않을 수 있습니다. 확산 색상에 단일 값을 곱해보고 출력을 vec4로 설정해보십시오.'out vec4 color;' 'color = vec4 (MaterialDiffuseColor * 0.5,1.0); ' –

+1

이것은 곱셈에 의한 것보다 다른 곳에서 버그가 될 가능성이 훨씬 높습니다. 따라서 실제 소스 코드를 제공해야합니다. –

+0

@IanYoung 포인터 주셔서 감사합니다! 이것이'GL_BLEND'를 켜고'vec3'의 결과를 얻었 기 때문에 발생했다고 보았습니다. 저는 이것을 하루에 전화해서 이것을 내일 "해결책"으로 올릴 것입니다. 다시 한 번 감사 드리며, 이제는 마침내 안전하고 건강하게 잘 수 있습니다. –

답변

0

그것은 문제가 내가 GL_BLEND를 사용할 수 있기 때문에 OpenGL을 대신 RGB (vec3)의 RGBA (vec4) 출력을 기대하고 있다는 것을 밝혀졌습니다.

해결책 1 : glEnable(GL_BLEND)을 제거하여 GL_BLEND을 끕니다.

해결책 2 : vec4을 반환하십시오. vec4(existing_vec3, 1.0)을 사용하여 1x4 벡터에 "패드"할 수 있습니다.