OpenGL에서 서로 다른 색상의 사각형으로 사각형 그리기

안슈

CUDA에서 실행되는 빔 포밍 프로그램이 있고 Opengl에서 빔의 출력을 표시해야합니다. 24x12 작은 사각형 배열로 구성된 Opengl에서 사각형을 그려야합니다. 빔 포밍을 수행하는 CUDA 프로그램의 출력에 따라 다른 색상. 다음 구조를 사용하여 정사각형의 정점과 각 정점의 색상을 포함하는 배열을 전달하는 VBO를 사용하여 reactangle을 그릴 수있었습니다. 내가 직면 한 문제의 전반적인 요약은 각 사각형에 색상을 올바르게 할당 할 수 없다는 것입니다. 코드에서 일부 발췌 :

struct attributes {
GLfloat coords[2]; //co-ordinates of the vertices
GLfloat color[3]; //color of the vertices
};

glGenBuffers(1, &vbo_romanis); // vbo_romanis is the VBO for drawing the frame
glBindBuffer(GL_ARRAY_BUFFER, vbo_romanis);
glBufferData(GL_ARRAY_BUFFER, sizeof(Vertices), Vertices, GL_STREAM_DRAW);

glShadeModel (GL_SMOOTH);
glUseProgram(program);

glEnableVertexAttribArray(attribute_coord);
glEnableVertexAttribArray(attribute_color);
glBindBuffer(GL_ARRAY_BUFFER, vbo_romanis);
glVertexAttribPointer(
attribute_coord2d,   // attribute
2,                   // number of elements per vertex, here (x,y)
GL_FLOAT,            // the type of each element
GL_FALSE,            // take our values as-is
sizeof(struct attributes),  // next coord2 appears every 5 floats
0                    // offset of first element
);
glVertexAttribPointer(
attribute_color,      // attribute
3,                      // number of elements per vertex, here (r,g,b)
GL_FLOAT,               // the type of each element
GL_FALSE,               // take our values as-is
sizeof(struct attributes),  // stride
(GLvoid*) offsetof(struct attributes, color)  // offset
);

/* Push each element in buffer_vertices to the vertex shader */
glDrawArrays(GL_QUADS, 0, 4*NUM_SQRS);

그래서 배열을 그릴 때 두 가지 문제에 직면하고 있습니다.

  1. 내가 원하는대로 나타나지 않는 색상. 내가 Opengl에 대해 읽은 바에 따르면 일단 할당 된 정점의 색상은 변경할 수 없습니다. 그러나 모든 사각형이 정점을 공유하기 때문에 색상이 엉망이 될 수 있습니다. 모든 정점에 같은 색을 주면 잘 작동하지만 다른 색의 모든 사각형을 그리고 싶을 때는 그렇지 않습니다. 그래서 누군가가 정말로 도움이 될 각 사각형에 다른 색상을 할당하는 방법을 지적 할 수 있다면.

  2. 각 프레임의 정점 색상을 어떻게 업데이트합니까? 전체 프레임을 다시 그려야합니까 아니면 정점의 색상 만 업데이트 할 수있는 방법이 있습니까?

저는 OpenGL 프로그래밍에 완전히 익숙하지 않으며 어떤 도움을 주시면 감사하겠습니다.

증오

정점 데이터가 실제로 무엇인지는 명확하지 않지만 다음과 같습니다.

그러나 모든 사각형이 정점을 공유하기 때문에 색상이 엉망이 될 수 있습니다.

두 개의 인접한 정사각형에 대해 다음 데이터를 사용하려고한다는 것을 의미합니다 (AF가 정점 임).

A---B---C
|   |   |
|   |   |
D---E---F

그러나 OpenGL에서 정점은 위치뿐만 아니라 모든 속성 의 집합입니다 . 여기서 얻은 것은 색상이 사각형 사이에 매끄럽게 보간된다는 것입니다. 따라서 기술적으로 B1, E1은 lieft 사각형의 색상이고 B2, E2는 오른쪽 사각형의 색상이지만 동일한 좌표를 사용하여 정점 B와 E를 B1 / B2 및 E1 / E2로 복제해야합니다.

그러나 문제에 대해 flat shadingvaertex 셰이더 출력을 flat. 버텍스 셰이더 출력 (가변)은 기본적으로 전체 프리미티브에 걸쳐 보간됩니다. 그러나이를 다음과 같이 정의 flat하면 보간이 방지됩니다. 대신 한 정점 의 값 이 전체 기본 요소에 사용됩니다. OpenGL은 도발하는 정점 의 conecpt를 사용하여 이러한 flat출력 의 값을 정의하는 기본 요소의 정점 을 정의 합니다.

이 명령 glProvokingVertex()은 정점을 선택할 일반 규칙을 지정하는 데 사용할 수 있으며 첫 번째와 마지막 사이에서 선택할 수 있습니다. 정점 데이터를 교묘하게 구성하면 정사각형 하나의 삼각형 모두에 대해 공유 할 정점을 얻을 수 있으며, 이는 둘 다에 대한 도발 정점이 될 수 있으므로 한 모서리의 색상만으로 각 "그리드 셀"의 색상을 정의 할 수 있습니다. 셀의 정점이며 정점을 복제 할 필요가 없습니다.

참고로 glShadeModel(GL_SMOOTH);코드에 명령 이 있습니다. 이것은 더 이상 사용되지 않으며 귀하의 의견에서 알 수 있듯이 프로그래밍 가능한 파이프 라인을 사용할 때 완전히 쓸모가 없습니다. 그러나 개념적으로 이것은 내가 여기서 제안하는 플랫 쉐이딩 접근법과 정반대입니다.

각 프레임의 정점 색상을 어떻게 업데이트합니까? 전체 프레임을 다시 그려야합니까 아니면 정점의 색상 만 업데이트 할 수있는 방법이 있습니까?

OpenGL은 장면 그래프 라이브러리가 아닙니다. 과거에 어떤 개체를 그렸는지 기억하지 못하며 그 속성을 변경할 수 없습니다. OpenGL은 렌더링 API이므로 화면에 다른 것을 표시하려면 다시 그리도록 지정해야합니다. 사각형 자체의 위치를 ​​변경하지 않고 색상을 업데이트 할 계획이라면 두 개의 인터리브되지 않은 VBO를 사용하여 색상을 분할하고 데이터를 배치하는 것이 더 좋습니다. 이렇게하면 한 버퍼에서 정적으로 위치를 가질 수 있고 다른 버퍼에서는 색상 업데이트 만 스트리밍 할 수 있습니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

정사각형 상자는 작은 화면에서 직사각형으로 크기가 조정됩니다.

분류에서Dev

Outlook-다른 색상의 직사각형 통과로 서식 지정

분류에서Dev

OpenGL에서 극좌표로 사각형 그리기

분류에서Dev

Javafx에서 사각형의 색상을 동적으로 변경

분류에서Dev

OpenGL : 프로그램이 변형 된 사각형 대신 일반 흰색 사각형을 렌더링합니다.

분류에서Dev

흰색 배경으로 네이티브 메서드 채우기로 사각형 그리기

분류에서Dev

서로 다른 크기의 정사각형이 서로 옆에 있고 위에있는 격자

분류에서Dev

루프에서 다양한 크기의 직사각형 그리기

분류에서Dev

Plotly : Plotly에서 그라디언트 색상으로 사각형을 그리는 방법은 무엇입니까?

분류에서Dev

React Native의 각 사용자 유형에 대한 다른 서랍 탐색기

분류에서Dev

파이썬의 원근 변환 : 직사각형에서 사다리꼴로

분류에서Dev

GeoJSON에서 다각형 및 다중 다각형 렌더링 및 / 또는 다른 채우기 색상, 레이블 등에서 동적으로 렌더링

분류에서Dev

GeoJSON에서 다각형 및 다중 다각형 렌더링 및 / 또는 다른 채우기 색상, 레이블 등에서 동적으로 렌더링

분류에서Dev

동일한 사각형으로 구성된 기하학에서 윤곽선 (원주) 다각형 추출

분류에서Dev

정사각형을 가져 와서 동일한 크기의 작은 정사각형 N으로 나누고 중심 좌표를 반환합니다.

분류에서Dev

직사각형의 모서리가 다른 직사각형 안에 있는지 확인

분류에서Dev

PHP에서 이미지의 각 모서리에 사각형 그리기

분류에서Dev

음의 방향으로 사각형 그리기 문제-Java

분류에서Dev

음의 방향으로 사각형 그리기 문제-Java

분류에서Dev

Matlab의 'line'명령으로 사각형 그리기

분류에서Dev

gnuplot에서 x에서 y 좌표로 사각형 그리기

분류에서Dev

drawrect 메서드에서 애니메이션으로 사각형 그리기?

분류에서Dev

사용자 입력 지점에서 정의 된 거리 (미터)로 Google지도에 다각형 (직사각형)을 그리는 방법

분류에서Dev

다른 방향으로 여러 직사각형 그리기 Android 문제

분류에서Dev

정사각형 행렬 A와 정사각형 행렬 B의 조건을 기반으로 한 서브 세트 정사각형 행렬 A

분류에서Dev

GLES 2.0은 Android에서 GL_POINTS를 사각형으로 그립니다.

분류에서Dev

LeafletDraw에서 GeoJSON으로의 다각형

분류에서Dev

주어진 깊이에서 OpenGL 그리기 직사각형

분류에서Dev

색상 사각형 높이의 크기를 위에서 아래로 늘리는 방법, [css]?

Related 관련 기사

  1. 1

    정사각형 상자는 작은 화면에서 직사각형으로 크기가 조정됩니다.

  2. 2

    Outlook-다른 색상의 직사각형 통과로 서식 지정

  3. 3

    OpenGL에서 극좌표로 사각형 그리기

  4. 4

    Javafx에서 사각형의 색상을 동적으로 변경

  5. 5

    OpenGL : 프로그램이 변형 된 사각형 대신 일반 흰색 사각형을 렌더링합니다.

  6. 6

    흰색 배경으로 네이티브 메서드 채우기로 사각형 그리기

  7. 7

    서로 다른 크기의 정사각형이 서로 옆에 있고 위에있는 격자

  8. 8

    루프에서 다양한 크기의 직사각형 그리기

  9. 9

    Plotly : Plotly에서 그라디언트 색상으로 사각형을 그리는 방법은 무엇입니까?

  10. 10

    React Native의 각 사용자 유형에 대한 다른 서랍 탐색기

  11. 11

    파이썬의 원근 변환 : 직사각형에서 사다리꼴로

  12. 12

    GeoJSON에서 다각형 및 다중 다각형 렌더링 및 / 또는 다른 채우기 색상, 레이블 등에서 동적으로 렌더링

  13. 13

    GeoJSON에서 다각형 및 다중 다각형 렌더링 및 / 또는 다른 채우기 색상, 레이블 등에서 동적으로 렌더링

  14. 14

    동일한 사각형으로 구성된 기하학에서 윤곽선 (원주) 다각형 추출

  15. 15

    정사각형을 가져 와서 동일한 크기의 작은 정사각형 N으로 나누고 중심 좌표를 반환합니다.

  16. 16

    직사각형의 모서리가 다른 직사각형 안에 있는지 확인

  17. 17

    PHP에서 이미지의 각 모서리에 사각형 그리기

  18. 18

    음의 방향으로 사각형 그리기 문제-Java

  19. 19

    음의 방향으로 사각형 그리기 문제-Java

  20. 20

    Matlab의 'line'명령으로 사각형 그리기

  21. 21

    gnuplot에서 x에서 y 좌표로 사각형 그리기

  22. 22

    drawrect 메서드에서 애니메이션으로 사각형 그리기?

  23. 23

    사용자 입력 지점에서 정의 된 거리 (미터)로 Google지도에 다각형 (직사각형)을 그리는 방법

  24. 24

    다른 방향으로 여러 직사각형 그리기 Android 문제

  25. 25

    정사각형 행렬 A와 정사각형 행렬 B의 조건을 기반으로 한 서브 세트 정사각형 행렬 A

  26. 26

    GLES 2.0은 Android에서 GL_POINTS를 사각형으로 그립니다.

  27. 27

    LeafletDraw에서 GeoJSON으로의 다각형

  28. 28

    주어진 깊이에서 OpenGL 그리기 직사각형

  29. 29

    색상 사각형 높이의 크기를 위에서 아래로 늘리는 방법, [css]?

뜨겁다태그

보관