2011-02-16 5 views
0

컨텍스트의 비트 당 다른 버퍼 : 푸시 버퍼 수준에서 (당신이 알고 싶은 경우 NV2A)는, 그리고 나는 GPU 에뮬레이터에서 일하고 있어요OpenGL은 정점 배열 포인터, 구성 요소

나는 시도하고있다 OpenGL을 사용하여 그림을 구현합니다. 에뮬레이션해야하는 GPU 명령은 각 버텍스 구성 요소에 대한 별도의 포인터를 포함합니다 (위치는 안개 좌표, 색상, 텍스처 좌표 등과 완전히 다른 메모리 주소에 있습니다) 다른 데이터는 정점 구성 요소 크기, 유형 및 스트라이드와 같습니다 푸쉬 버퍼에도 존재하지만,이 질문에는 실제로 관련이 없습니다.

필자는 Vertex Array Objects에 대해 읽었지 만 테스트가 끝나면 glVertexAttribPointer으로 설정할 수있는 포인터는 모두 Vertex Buffer Object에 상대적이어야합니다. 이미 메모리에 데이터 사본을 가지고 있습니다.

질문 :

는 OpenGL을에 (모든의 OpenGL API에 의해 관리되지 않음) 별도의 포인터 정점 구성 요소 당을 사용하여 정점을 그릴 수 있습니까? 그리고 어떻게 코드가 거칠게 보이겠습니까?

추신 : 내가 GPU를 에뮬레이트하고 있기 때문에 버텍스 쉐이더 프로그램도 고려해야합니다. 나는 아직 이것들에 대해 연구하지 않았으므로 그 어떤 제안도 환영합니다. 티아!

+0

핵심 프로필 또는 호환성 프로필에서 OpenGL을 사용 하시겠습니까? – shoosh

+0

@shoosh : 그게 무슨 뜻인지조차 모르겠다 - 나는 OpenGL 초보자 인 것 같아. 그러나 WinXP 이상의 ATI, NVidia 및 기타 주류 카드는 최대한의 호환성을 목표로합니다. – PatrickvL

+0

왜 VBO를 피하려고합니까? – kvark

답변

2

VBO가 필요하지 않으면 glVertexAttribPointer는 VBO가 바인딩되지 않은 경우 일반 CPU 포인터를 사용합니다 (glBindBuffer(GL_ARRAY_BUFFER, 0)을 호출하여 확인할 수 있습니다). 그리고 예, 속성 스트림 당 하나의 주소를 설정할 수 있습니다.