패키지 | flash.display3D |
클래스 | public class VertexBuffer3D |
상속 | VertexBuffer3D Object |
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 11, AIR 3 |
VertexBuffer3D 객체를 사용하여 꼭지점 집합의 각 포인트와 연결된 데이터를 정의합니다. 벡터 배열 또는 ByteArray에서 꼭지점 데이터를 업로드할 수 있습니다. 업로드하고 나면 원래 배열의 데이터는 더 이상 참조되지 않습니다. 즉, 소스 배열을 변경 또는 삭제해도 꼭지점 데이터가 변경되지 않습니다.
각 꼭지점과 연결된 데이터는 응용 프로그램에서 정의한 형식이며 꼭지점 셰이더 프로그램의 입력으로 사용됩니다. Context3D setVertexBufferAt()
함수를 사용하여 특정 꼭지점 프로그램 입력에 속하는 값을 지정합니다. 꼭지점 프로그램은 최대 8개의 입력(꼭지점 특성 레지스터라고도 함)을 사용할 수 있습니다. 각 입력에는 1-4개의 32비트 값이 필요할 수 있습니다. 예를 들어 꼭지점의 [x,y,z] 위치 좌표는 세 개의 32비트 값을 포함하는 벡터로 꼭지점 프로그램에 전달될 수 있습니다. Context3DVertexBufferFormat 클래스는 셰이더 입력에 지원되는 형식에 대한 상수를 정의합니다. 각 포인트에 대해 최대 64개의 32비트 값(256바이트)을 제공할 수 있습니다(이 경우 단일 꼭지점 셰이더가 모든 데이터를 사용할 수는 없음).
또한 setVertexBufferAt()
함수는 모든 후속 drawTriangles()
호출을 렌더링하는 데 사용할 꼭지점 버퍼를 식별합니다. 다른 꼭지점 버퍼의 데이터를 렌더링하려면 적절한 인수와 함께 setVertexBufferAt()
을 다시 호출합니다. 위치 데이터가 한 버퍼에 있고 텍스처 좌표가 다른 버퍼에 있는 방식으로 동일한 포인트에 대한 데이터를 여러 꼭지점 버퍼에 저장할 수 있지만, 일반적으로 포인트의 모든 데이터가 단일 버퍼에서 제공될 경우에 렌더링이 더 효율적입니다.
Context3D drawTriangles()
메서드에 전달된 Index3DBuffer 객체는 꼭지점 데이터를 삼각형으로 구성합니다. 인덱스 버퍼의 각 값은 꼭지점 버퍼의 꼭지점에 대한 인덱스입니다. 세 개의 인덱스 집합이 순서대로 삼각형을 정의합니다.
VertexBuffer3D 객체를 직접 만들 수 없습니다. 대신에 Context3D createVertexBuffer()
메서드를 사용합니다.
꼭지점 버퍼와 연결된 렌더링 컨텍스트 리소스를 해제하려면 객체의 dispose()
메서드를 호출합니다.
관련 API 요소
메서드 | 정의 주체 | ||
---|---|---|---|
이 객체와 연결된 모든 리소스를 해제합니다. | VertexBuffer3D | ||
지정된 속성이 객체에 정의되어 있는지 여부를 나타냅니다. | Object | ||
Object 클래스의 인스턴스가 매개 변수로 지정된 객체의 프로토타입 체인에 있는지 여부를 나타냅니다. | Object | ||
지정된 속성이 존재하고 열거 가능한지 여부를 나타냅니다. | Object | ||
루프 작업에서 동적 속성을 사용할 수 있는지 여부를 설정합니다. | Object | ||
로캘별 규칙에 따라 서식이 지정된 이 객체의 문자열 표현을 반환합니다. | Object | ||
지정된 객체의 문자열 표현을 반환합니다. | Object | ||
바이트 배열에서 포인트 집합에 대한 데이터를 렌더링 컨텍스트에 업로드합니다. | VertexBuffer3D | ||
벡터 배열에서 포인트 집합에 대한 데이터를 렌더링 컨텍스트에 업로드합니다. | VertexBuffer3D | ||
지정된 객체의 프리미티브 값을 반환합니다. | Object |
dispose | () | 메서드 |
public function dispose():void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 11, AIR 3 |
이 객체와 연결된 모든 리소스를 해제합니다. 꼭지점 버퍼를 삭제한 후 upload() 호출 및 이 객체를 사용한 렌더링은 실패합니다.
uploadFromByteArray | () | 메서드 |
public function uploadFromByteArray(data:ByteArray, byteArrayOffset:int, startVertex:int, numVertices:int):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 11, AIR 3 |
바이트 배열에서 포인트 집합에 대한 데이터를 렌더링 컨텍스트에 업로드합니다.
매개 변수
data:ByteArray — 꼭지점 데이터를 포함하는 바이트 배열입니다. 각 데이터 값은 4바이트 길이입니다. 꼭지점의 값 수는 Context3D createVertexBuffer3D() 메서드에 대한 data32PerVertex 매개 변수를 사용하여 버퍼 생성 시에 지정됩니다. 데이터의 바이트 길이는 꼭지점당 값 수의 4배에 byteArrayOffset 을 더하여 꼭지점 수를 곱한 값이어야 합니다. ByteArray 객체는 little endian 형식을 사용해야 합니다.
| |
byteArrayOffset:int — 데이터의 시작 부분에서 건너뛸 바이트 수입니다.
| |
startVertex:int — 로드할 첫 번째 꼭지점의 인덱스입니다. 꼭지점 데이터의 하위 영역을 로드하기 위해 0이 아닌 startVertex의 값이 사용될 수 있습니다.
| |
numVertices:int — data 에서 로드할 꼭지점 수입니다.
|
오류
TypeError — Null 포인터 오류: data 가 null인 경우입니다.
| |
RangeError — 잘못된 입력 크기: byteArrayOffset 이 0보다 작거나, byteArrayOffset 이 data 의 길이보다 크거나 같거나, data - byteArrayOffset 의 요소 수가 Context3D::createVertexBuffer() 에서 제공된 numVertices *data32pervertex *4보다 작은 경우입니다.
| |
Error — 3768: 백그라운드에서 실행되는 동안 Stage3D API는 사용할 수 없습니다.
|
uploadFromVector | () | 메서드 |
public function uploadFromVector(data:Vector.<Number>, startVertex:int, numVertices:int):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 11, AIR 3 |
벡터 배열에서 포인트 집합에 대한 데이터를 렌더링 컨텍스트에 업로드합니다.
매개 변수
data:Vector.<Number> — 32비트 값의 벡터입니다. 단일 꼭지점은 벡터에 순차적으로 저장된 여러 값으로 구성됩니다. 꼭지점의 값 수는 Context3D createVertexBuffer3D() 메서드에 대한 data32PerVertex 매개 변수를 사용하여 버퍼 생성 시에 지정됩니다. 벡터의 길이는 꼭지점당 값 수에 꼭지점 수를 곱한 값이어야 합니다.
| |
startVertex:int — 로드할 첫 번째 꼭지점의 인덱스입니다. 꼭지점 데이터의 하위 영역을 로드하기 위해 0이 아닌 startVertex 의 값이 사용될 수 있습니다.
| |
numVertices:int — data 가 나타내는 꼭지점 수입니다.
|
오류
TypeError — Null 포인터 오류: data 가 null인 경우입니다.
| |
RangeError — 잘못된 입력 크기: data 의 요소 수가 Context3D::createVertexBuffer() 에서 제공된 numVertices * data32PerVertex 보다 작거나, startVertex + numVertices 가 Context3D::createVertexBuffer() 에서 제공된 numVertices 보다 큰 경우입니다.
|
setVertexBufferAt()
메서드를 호출하여 처음 세 개의 데이터 포인트가 세 개의 부동 소수점 값(va0)으로 꼭지점 프로그램에 전달되고 그 다음 세 개의 데이터 포인트가 va1로 전달되도록 지정합니다. 꼭지점 프로그램에는 이와 같이 정의된 입력을 8개까지 지정할 수 있으며, 이러한 입력을 꼭지점 특성 레지스터라고도 합니다.
const dataPerVertex:int = 6; var vertexData:Vector.<Number> = Vector.<Number>( [ // x, y, z r, g, b format 0, 0, 0, 1, 1, 1, -1, 1, 0, 0, 0,.5, 1, 1, 0, 0, 0, 1, 1,-1, 0, .5, 0, 0, -1,-1, 0, 1, 0, 0 ] ); var vertexes:VertexBuffer3D = renderContext.createVertexBuffer( vertexData.length/dataPerVertex, dataPerVertex ); vertexes.uploadFromVector( vertexData, 0, vertexData.length/dataPerVertex ); //Identify vertex data inputs for vertex program renderContext.setVertexBufferAt( 0, vertexes, 0, Context3DVertexBufferFormat.FLOAT_3 ); //Defines shader input va0 as the position data renderContext.setVertexBufferAt( 1, vertexes, 3, Context3DVertexBufferFormat.FLOAT_3 ); //Defines shader input va1 as the color data
Tue Jun 12 2018, 03:17 PM Z