100 likes | 224 Vues
This summary details the current status of the command processor, memory controller, and vertex buffer object (VBO) implementation in OpenGL for Week 255. Key points include identified issues with communication and access methods, the necessity of multiplexing transactions, and a series of vertex array functionalities. The document outlines the implementation of various pointer functions for vertex arrays and the command structure for ARB vertex buffer objects, highlighting the types of buffers, data transfer methods, and intended access modes for optimal performance.
E N D
Status – Week 255 Victor Moya
Summary • Command Processor. • Memory Controller. • Streamer. • Vertex buffers in OpenGL. • ARB_vertex_buffer_object.
Command Processor • Missing comunication. • Missing AGP_READ and AGP_REG_READ (not useful right now).
Memory Controller • Missing access to memory modules delay (a signal?). • To decide: number of transactions in process at the same time. • Currently only one transaction at a time. • Methodology for multiple transactions: time multiplexing?
Streamer • To do.
Vertex Arrays in OpenGL • VertexPointer(int size, enum type, sizei stride, void *pointer). • NormalPointer(enum type, sizei stride, void *pointer). • ColorPointer(int size, enum type, sizei stride, void *pointer). • SecondaryColorPointer(int size, enum type, sizei stride, void *pointer). • IndexPointer(enum type, sizei stride, void *pointer). • FogCoordPointer(enum type, sizei stride, void *pointer). • TexCoordPointer(int size, enum type, sizei stride, void *pointer). • EdgeFlagPointer(sizei stride, void *pointer).
Vertex Arrays in OpenGL • DrawArrays(enum mode, int first, sizei count). • MultiDrawArrays(enum mode, int *first, sizei *count, sizei primcount). • DrawElements(enum mode, sizei count, enum type, void *indices). • MultiDrawElements(enum mode, sizei *count, enum type, void **indices, sizei primcount). • DrawRangeElements(enum mode, uint start, unit end, sizei count, enum type, void *indices). • InterleaveArrays(enum format, sizei stride, void *pointer).
ARB_vertex_buffer_object • BindBufferARB(enum target, uint buffer). • DeleteBuffersARB(sizei n, const uint *buffers). • GenBuffersARB(sizei n, uint *buffers). • boolean IsBufferARB(uint buffer). • BufferDataARB(enum target, sizeiptrARB size, const void *data, enum usage). • BufferSubDataARB(enum target, intptrARB offset, sizeiptrARB size, const void *data). • GetBufferSubDataARB(enum target, intptrARB offset, sizeiptrARB size, void *data). • void *MapBufferARB(enum target, enum access). • boolean UnMapBufferARB(enum target).
ARB_vertex_buffer_object • target: • ARRAY_BUFFER_ARB. • ELEMENT_ARRAY_BUFFER_ARB. • usage: • STREAM_DRAW_ARB • STREAM_READ_ARB • STREAM_COPY_ARB • STATIC_DRAW_ARB • STATIC_READ_ARB • STATIC_COPY_ARB • DYNAMIC_DRAW_ARB • DYNAMIC_READ_ARB • DYNAMIC_COPY_ARB
ARB_vertex_buffer_object • access: • READ_ONLY_ARB. • WRITE_ONLY_ARB. • READ_WRITE_ARB.