DrawElements가 여러 개체에서 예상대로 작동하지 않습니다.

스키 위

내 프로그램에서 기본적으로 모든 객체를 하나의 버퍼에 넣었는데, 이제 여러 객체를 그리려고 할 때 문제가 발생합니다. 하나만 그려도 여전히 작동합니다.
이 문제는 내가 대략적으로 모든 glDrawArrays것을 glDrawElements호출과 물론 모든 기본 인프라로 변경했을 때 발생하기 시작했습니다 .
지금은 단순히 정점에서 인덱스 로 일대일 매핑 만들었습니다 .

Java 8, LWJGL 및 OpenGL 3.3을 사용하고 있습니다.

초기화 :

//drawable vertex buffer
vertexBuffer = new StaticDrawArrayBuffer().create().bind().fillData(Drawable.putAllVertexData(drawables));
vertexArray = new VertexArrayObject().create().bind()
        .setAttribute(vertexBuffer, VS_POSITION, 3, GL_FLOAT, false, 0, 0)
        .enableAttributes(VS_POSITION);

//drawable elements buffer
elementBuffer = new StaticDrawElementArrayBuffer().create().bind().fillData(Drawable.putAllElementsData(drawables));

그래서 다음을 수행합니다.

  1. 를 만들고 ARRAY_BUFFER거기에있는 모든 정점 데이터를 저장합니다.
  2. Vertex Array Object를 만들고 position데이터를 찾을 수있는 위치를 설정합니다 .
  3. 를 작성 ELEMENT_ARRAY_BUFFER하고 거기에 모든 인덱스를 저장합니다.

내용은 다음과 같습니다.

정점 데이터 :

-400.0
0.0
-400.0
-400.0
0.0
400.0
400.0
0.0
-400.0
-400.0
0.0
400.0
400.0
0.0
-400.0
400.0
0.0
400.0
1.0
1.0
-1.0
-1.0
1.0
-1.0
-1.0
1.0
1.0
-1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
-1.0
1.0
-1.0
-1.0
-1.0
-1.0
-1.0
-1.0
-1.0
1.0
-1.0
-1.0
1.0
1.0
-1.0
1.0
1.0
-1.0
-1.0
-1.0
1.0
-1.0
-1.0
-1.0
-1.0
-1.0
-1.0
1.0
-1.0
-1.0
1.0
-1.0
1.0
1.0
-1.0
1.0
-1.0
-1.0
1.0
1.0
-1.0
-1.0
1.0
1.0
-1.0
1.0
1.0
-1.0
1.0
1.0
1.0
1.0
-1.0
1.0
1.0
1.0
1.0
1.0
1.0
-1.0
1.0
1.0
-1.0
-1.0
1.0
-1.0
-1.0
1.0
1.0
-1.0
1.0
1.0
1.0
1.0
1.0
-1.0
1.0
-1.0
-1.0
-1.0
-1.0
-1.0
-1.0
-1.0
-1.0
-1.0
1.0
-1.0
1.0
1.0
-1.0

지수 데이터 :

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

그래서 그것은 126 개의 float이고, 그것은 (x, y, z)42 개의 인덱스 에 의해 매핑되어야합니다 .

그러나 나중에 다음 호출을 수행하면 :

gl.glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0)
gl.glDrawElements(GL_TRIANGLES, 36, GL_UNSIGNED_INT, 6)

객체는 모두 서로 섞여서 그려집니다. 분명히 그들이 어떻게 보이는지가 아니라 코드가 할 것이라고 생각한 것입니다.

  • 오프셋 0 이후 처음 6 개의 인덱스에 해당하는 정점 데이터를 가져와 그립니다.
  • 오프셋 6 이후 처음 36 개의 인덱스에 해당하는 정점 데이터를 가져와 그립니다.

이것이 작동하지 않는 가능한 이유는 무엇입니까?

데이터 늑대

glDrawElements 마지막 매개 변수가 인덱스 배열에 대한 포인터로 사용되었습니다. VBO에서이 매개 변수는 VBO에 대한 바이트 크기 오프셋으로 재사용됩니다. 따라서 인덱스를 사용하지 않고 데이터가 시작되는 VBO 로의 바이트 오프셋을 사용합니다. 귀하의 경우 sizeof(GLfloat) * x에는 sizeof(GLfloat)일반적으로 4입니다. 따라서 특정 데이터 레이아웃을 곱해야 바이트 오프셋을 얻으려면 오프셋 인덱스에 4를 곱해야합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

JavaScript 개체가 예상대로 작동하지 않습니다.

분류에서Dev

대체가 예상대로 작동하지 않습니다

분류에서Dev

Excel = 연산자가 여러 탭에서 예상대로 작동하지 않음

분류에서Dev

Angular $ scope가 예상대로 작동하지 않습니다. 컨트롤러 $ scope 및 $ scope.function 범위에서 개체 값 할당 시도

분류에서Dev

<span> 커서가 예상대로 작동하지 않습니다.

분류에서Dev

Anguarjs-`orderBy`가 컨트롤러에서 예상대로 작동하지 않습니다.

분류에서Dev

TypeScript 선택적 개체 키가 예상대로 작동하지 않습니다.

분류에서Dev

Kubernetes-클러스터 IP 서비스가 예상대로 작동하지 않습니다.

분류에서Dev

List <Object> 직렬화가 여러 개체에서 작동하지 않습니다.

분류에서Dev

Webview가 KITKAT 이상에서 예상대로 작동하지 않습니다.

분류에서Dev

여기 문서 내부의 bash 스크립트가 예상대로 작동하지 않습니다.

분류에서Dev

SimplePie에서 여러 피드가 제대로 작동하지 않습니다.

분류에서Dev

여러 LIKE 조건을 사용하여 검색 쿼리가 예상대로 작동하지 않습니다.

분류에서Dev

onClick 가시성 토글 러가 예상대로 작동하지 않습니다.

분류에서Dev

Bash 명령 대체가 예상대로 작동하지 않습니다.

분류에서Dev

예상대로 작동하지 않는 여러 열의 순서

분류에서Dev

UINavigationBar에 대한 UIBindingObserver가 예상대로 작동하지 않습니다.

분류에서Dev

envsubst가 bash for 루프에서 예상대로 작동하지 않습니다.

분류에서Dev

Regex가 Angular 템플릿에서 예상대로 작동하지 않습니다.

분류에서Dev

for 루프 문에서 Async / Await가 예상대로 작동하지 않습니다.

분류에서Dev

overflow : auto가 position : sticky에서 예상대로 작동하지 않습니다.

분류에서Dev

TaskCompletionSource에서 CancellationTokenSource가 예상대로 작동하지 않습니다.

분류에서Dev

AND 연산자가 C에서 예상대로 작동하지 않습니다.

분류에서Dev

assertEquals가 Kotlin의 Set에서 예상대로 작동하지 않습니다.

분류에서Dev

Xor가 예상대로 VisuabBasic에서 작동하지 않습니다.

분류에서Dev

jQuery load ()가 textarea에서 예상대로 작동하지 않습니다.

분류에서Dev

C ++ 삭제가 Windows에서 예상대로 작동하지 않습니다.

분류에서Dev

Float TryParse가 문자열에서 예상대로 작동하지 않습니다.

분류에서Dev

rsync --link-dest가 symlink에서 예상대로 작동하지 않습니다.

Related 관련 기사

  1. 1

    JavaScript 개체가 예상대로 작동하지 않습니다.

  2. 2

    대체가 예상대로 작동하지 않습니다

  3. 3

    Excel = 연산자가 여러 탭에서 예상대로 작동하지 않음

  4. 4

    Angular $ scope가 예상대로 작동하지 않습니다. 컨트롤러 $ scope 및 $ scope.function 범위에서 개체 값 할당 시도

  5. 5

    <span> 커서가 예상대로 작동하지 않습니다.

  6. 6

    Anguarjs-`orderBy`가 컨트롤러에서 예상대로 작동하지 않습니다.

  7. 7

    TypeScript 선택적 개체 키가 예상대로 작동하지 않습니다.

  8. 8

    Kubernetes-클러스터 IP 서비스가 예상대로 작동하지 않습니다.

  9. 9

    List <Object> 직렬화가 여러 개체에서 작동하지 않습니다.

  10. 10

    Webview가 KITKAT 이상에서 예상대로 작동하지 않습니다.

  11. 11

    여기 문서 내부의 bash 스크립트가 예상대로 작동하지 않습니다.

  12. 12

    SimplePie에서 여러 피드가 제대로 작동하지 않습니다.

  13. 13

    여러 LIKE 조건을 사용하여 검색 쿼리가 예상대로 작동하지 않습니다.

  14. 14

    onClick 가시성 토글 러가 예상대로 작동하지 않습니다.

  15. 15

    Bash 명령 대체가 예상대로 작동하지 않습니다.

  16. 16

    예상대로 작동하지 않는 여러 열의 순서

  17. 17

    UINavigationBar에 대한 UIBindingObserver가 예상대로 작동하지 않습니다.

  18. 18

    envsubst가 bash for 루프에서 예상대로 작동하지 않습니다.

  19. 19

    Regex가 Angular 템플릿에서 예상대로 작동하지 않습니다.

  20. 20

    for 루프 문에서 Async / Await가 예상대로 작동하지 않습니다.

  21. 21

    overflow : auto가 position : sticky에서 예상대로 작동하지 않습니다.

  22. 22

    TaskCompletionSource에서 CancellationTokenSource가 예상대로 작동하지 않습니다.

  23. 23

    AND 연산자가 C에서 예상대로 작동하지 않습니다.

  24. 24

    assertEquals가 Kotlin의 Set에서 예상대로 작동하지 않습니다.

  25. 25

    Xor가 예상대로 VisuabBasic에서 작동하지 않습니다.

  26. 26

    jQuery load ()가 textarea에서 예상대로 작동하지 않습니다.

  27. 27

    C ++ 삭제가 Windows에서 예상대로 작동하지 않습니다.

  28. 28

    Float TryParse가 문자열에서 예상대로 작동하지 않습니다.

  29. 29

    rsync --link-dest가 symlink에서 예상대로 작동하지 않습니다.

뜨겁다태그

보관