Panda3D
|
Class for storing data to be transferred to the GPU. More...
Public Types | |
enum | CommandType { CMD_invalid = 0, CMD_store_light = 1, CMD_remove_light = 2, CMD_store_source = 3, CMD_remove_sources = 4 } |
The different types of GPUCommands. More... | |
Public Member Functions | |
__init__ (const GPUCommand) | |
__init__ (GPUCommand::CommandType command_type) | |
Constructs a new GPUCommand with the given command type. More... | |
pushFloat (float v) | |
Appends a float to the GPUCommand. More... | |
pushInt (int v) | |
Appends an integer to the GPUCommand. More... | |
pushMat3 (const LMatrix3 v) | |
Appends a floating point 3x3 matrix to the GPUCommand. More... | |
pushMat4 (const LMatrix4 v) | |
Appends a floating point 4x4 matrix to the GPUCommand. More... | |
pushVec3 (const LVecBase3 v) | |
Appends a 3-component floating point vector to the GPUCommand. More... | |
pushVec3 (const LVecBase3i v) | |
Appends a 3-component integer vector to the GPUCommand. More... | |
pushVec4 (const LVecBase4 v) | |
Appends a 4-component floating point vector to the GPUCommand. More... | |
pushVec4 (const LVecBase4i v) | |
Appends a 4-component integer vector to the GPUCommand. More... | |
write (Ostream out) | |
Prints out the GPUCommand to the console. More... | |
writeTo (const PTAUchar dest, int command_index) | |
Writes the GPU command to a given target. More... | |
Static Public Member Functions | |
static bool | getUsesIntegerPacking () |
Returns whether integers are packed as floats. More... | |
Class for storing data to be transferred to the GPU.
This class can be seen like a packet, to be transferred to the GPU. It has a command type, which tells the GPU what to do once it recieved this "packet". It stores a limited amount of floating point components.
enum CommandType |
__init__ | ( | const | GPUCommand | ) |
__init__ | ( | GPUCommand::CommandType | command_type | ) |
Constructs a new GPUCommand with the given command type.
This will construct a new GPUCommand of the given command type. The command type should be of GPUCommand::CommandType, and determines what data the GPUCommand contains, and how it will be handled.
command_type | The type of the GPUCommand |
|
static |
Returns whether integers are packed as floats.
This returns how integer are packed into the data stream. If the returned value is true, then integers are packed using their binary representation converted to floating point format. If the returned value is false, then integers are packed by simply casting them to float, e.g. val = (float)i;
pushFloat | ( | float | v | ) |
Appends a float to the GPUCommand.
This adds an integer to the back of the GPUCommand. Its used by all other push_xxx methods, and simply stores the value, then increments the write pointer. When the amount of floats exceeds the capacity of the GPUCommand, an error will be printed, and the method returns without doing anything else.
v | The float to append. |
pushInt | ( | int | v | ) |
Appends an integer to the GPUCommand.
This adds an integer to the back of the GPUCommand. Depending on the setting in convert_int_to_float, this will either just convert the int to a float by casting it, or just do a bitwise copy.
v | The integer to append. |
pushMat3 | ( | const LMatrix3 | v | ) |
Appends a floating point 3x3 matrix to the GPUCommand.
This appends a floating point 3x3 matrix to the GPUCommand, by pushing all components in row-order to the command. This occupies a space of 9 floats.
v | Matrix to append |
pushMat4 | ( | const LMatrix4 | v | ) |
Appends a floating point 4x4 matrix to the GPUCommand.
This appends a floating point 4x4 matrix to the GPUCommand, by pushing all components in row-order to the command. This occupies a space of 16 floats.
v | Matrix to append |
pushVec3 | ( | const LVecBase3 | v | ) |
Appends a 3-component floating point vector to the GPUCommand.
This appends a 3-component floating point vector to the command. It basically just calls push_float() for every component, in the order x, y, z, which causes the vector to occupy the space of 3 floats.
v | Int-Vector to append. |
pushVec3 | ( | const LVecBase3i | v | ) |
Appends a 3-component integer vector to the GPUCommand.
This appends a 3-component integer vector to the command. It basically just calls push_int() for every component, in the order x, y, z, which causes the vector to occupy the space of 3 floats.
v | Int-Vector to append. |
pushVec4 | ( | const LVecBase4 | v | ) |
Appends a 4-component floating point vector to the GPUCommand.
This appends a 4-component floating point vector to the command. It basically just calls push_float() for every component, in the order x, y, z, which causes the vector to occupy the space of 3 floats.
v | Int-Vector to append. |
pushVec4 | ( | const LVecBase4i | v | ) |
Appends a 4-component integer vector to the GPUCommand.
This appends a 4-component integer vector to the command. It basically just calls push_int() for every component, in the order x, y, z, w, which causes the vector to occupy the space of 4 floats.
v | Int-Vector to append. |
write | ( | Ostream | out | ) |
Prints out the GPUCommand to the console.
This method prints the type, size, and data of the GPUCommand to the console. This helps for debugging the contents of the GPUCommand. Keep in mind that integers might be shown in their binary float representation, depending on the setting in the GPUCommand::convert_int_to_float method.
writeTo | ( | const PTAUchar | dest, |
int | command_index | ||
) |
Writes the GPU command to a given target.
This method writes all the data of the GPU command to a given target. The target should be a pointer to memory being big enough to hold the data. Presumably #dest will be a handle to texture memory. The command_index controls the offset where the data will be written to.
dest | Handle to the memory to write the command to |
command_index | Offset to write the command to. The command will write its data to command_index * GPU_COMMAND_ENTRIES. When writing the GPUCommand in a GPUCommandList, the command_index will most likely be the index of the command in the list. |