저는 joint []에 대한 변환 행렬을 포함하는 mat4 []에 인덱스를 유지하기 위해 int [] 속성이 필요한 스켈 레탈 애니메이션 용 셰이더를 작성하고 있습니다. 내 문제는 int []를 저장하는 VBO를 만들 수 없다는 것입니다. 그러나 GL30.glVertexAttribIPointer()를 사용하여 시도했지만 내 컴퓨터는 OpenGL 3.0을 지원하지 않습니다. 그래서 glVertexAttribPointer()를 읽어야 만 강제로 모든 값을 float로 변환합니다. 셰이더에서 액세스 할 수있는 VBO에 int []를 저장하는 가장 좋은 방법은 무엇입니까?int [] 속성이있는 LWJGL opengl glsl 셰이더
0
A
답변
1
당신이하려고하는 것에는 두 가지 문제점이 있습니다.
첫 번째 문제는 정수를 전달하려고한다는 것입니다. 수레를 사용하십시오; float를 배열의 인덱스로 사용하는 것은 잘못된 것이 아닙니다. normalized
매개 변수가 glVertexAttribPointer
인 경우 GL_FALSE
을 전달하면 효과적으로 정수가됩니다. 각 색인을 GL_UNSIGNED_BYTE
으로 전달할 수 있습니다.
두 번째 문제는 배열을 전달하려고한다는 것입니다. 그만해; 배열이 아닌 vec4
이 필요합니다. XYZW는 행렬과 함께 사용하는 4 개의 인덱스를 나타냅니다.
정점에 4 개 이상의 행렬이 필요한 경우 어떻게해야합니까? 그것도 그만 두십시오. 그게 다른 사람들이 가죽을 벗기는 법입니다. 이것이 작동하는 방식은 정점 데이터를 만들 때 4 개 이상의 행렬에 의해 정점이 영향을받는 경우 가장 큰 가중치로 4를 취합니다 (그에 따라 가중치를 다시 조정 함).
관련 문제
- 1. OpenGL GLSL 셰이더 버전
- 2. GLSL 셰이더 문제
- 3. GLSL 셰이더 법선 생성
- 4. 텍스처를 스크롤하는 GLSL 셰이더
- 5. LWJGL GLSL 3D Lighting
- 6. OpenGL 셰이더 버전 오류
- 7. Qt 4.6 OpenGL GLSL
- 8. 디버그 지원 OpenGL glsl 셰이더 또는 그것을 사용하는 코드
- 9. OpenGL/GLSL 색상 첨부 범위
- 10. lines_adjacency를 사용하는 GLSL 지오메트리 셰이더
- 11. GLSL 프래그먼트 셰이더 출력 유형
- 12. LWJGL GLSL 셰이더가 컴파일되지 않습니다.
- 13. GLSL #version에서 구문 오류 (Mac의 경우 LWJGL)
- 14. OpenGL GLSL interpolation
- 15. ~ 35fps의 LWJGL OpenGL 응용 프로그램
- 16. OpenGL : GLSL float의 정밀도가 낮음
- 17. OpenGL 셰이더 공유 변수
- 18. OpenGL GLSL 코드가 컴파일되어서는 안된다.
- 19. LWJGL GLSL 쉐이더 유효성 검사가 항상 실패
- 20. LWJGL/opengl in eclipse
- 21. LWJGL, openGL 멀티 텍스처링
- 22. 여러 개의 sampler2D를 사용하는 GLSL 셰이더
- 23. Renderscript 모든 유니폼을 float로 변환하는 GLSL 셰이더
- 24. LWJGL GLSL 서브 루틴이 변경되지 않습니다
- 25. OpenGL GLSL shaders 통계
- 26. OpenGL/GLSL 안개 어플리케이션
- 27. OpenGL GLSL 텍스처 투명도
- 28. OpenGL/GLSL line trails
- 29. GLSL 독립 실행 형 셰이더 컴파일러
- 30. Mac OS X의 프로필 GLSL 조각 셰이더?
부동 소수점을 사용하여 정수를 저장할 경우 인접한 두 개의 부동 소수점 사이의 차이가 1보다 큰 경우를 제외하면 최대 2^23까지 문제가 없습니다 (따라서 모든 정수가 부동 소수점으로 표시 될 수있는 것은 아닙니다). 그러나 나는 이것이이 상황에 아무런 제한이 없다고 기대한다. –