| 65 | } |
| 66 | |
| 67 | uint8_t* WriteVertexAttributeFromFloat(uint8_t* value_write_ptr, float value, dmGraphics::VertexAttribute::DataType data_type) |
| 68 | { |
| 69 | switch (data_type) |
| 70 | { |
| 71 | case dmGraphics::VertexAttribute::TYPE_BYTE: |
| 72 | { |
| 73 | int8_t typed_value = (int8_t) dmMath::Clamp(value, -128.0f, 127.0f); |
| 74 | memcpy(value_write_ptr, &typed_value, sizeof(typed_value)); |
| 75 | return value_write_ptr + 1; |
| 76 | } |
| 77 | case dmGraphics::VertexAttribute::TYPE_UNSIGNED_BYTE: |
| 78 | { |
| 79 | uint8_t typed_value = (uint8_t) dmMath::Clamp(value, 0.0f, 255.0f); |
| 80 | memcpy(value_write_ptr, &typed_value, sizeof(typed_value)); |
| 81 | return value_write_ptr + 1; |
| 82 | } |
| 83 | case dmGraphics::VertexAttribute::TYPE_SHORT: |
| 84 | { |
| 85 | int16_t typed_value = (int16_t) dmMath::Clamp(value, -32768.0f, 32767.0f); |
| 86 | memcpy(value_write_ptr, &typed_value, sizeof(typed_value)); |
| 87 | return value_write_ptr + 2; |
| 88 | } |
| 89 | case dmGraphics::VertexAttribute::TYPE_UNSIGNED_SHORT: |
| 90 | { |
| 91 | uint16_t typed_value = (uint16_t) dmMath::Clamp(value, 0.0f, 65535.0f); |
| 92 | memcpy(value_write_ptr, &typed_value, sizeof(typed_value)); |
| 93 | return value_write_ptr + 2; |
| 94 | } |
| 95 | case dmGraphics::VertexAttribute::TYPE_INT: |
| 96 | { |
| 97 | int32_t typed_value = (int32_t) dmMath::Clamp((double) value, -2147483648.0, 2147483647.0); |
| 98 | memcpy(value_write_ptr, &typed_value, sizeof(typed_value)); |
| 99 | return value_write_ptr + 4; |
| 100 | } |
| 101 | case dmGraphics::VertexAttribute::TYPE_UNSIGNED_INT: |
| 102 | { |
| 103 | uint32_t typed_value = (uint32_t) dmMath::Clamp((double) value, 0.0, 4294967295.0); |
| 104 | memcpy(value_write_ptr, &typed_value, sizeof(typed_value)); |
| 105 | return value_write_ptr + 4; |
| 106 | } |
| 107 | case dmGraphics::VertexAttribute::TYPE_FLOAT: |
| 108 | memcpy(value_write_ptr, &value, sizeof(value)); |
| 109 | return value_write_ptr + 4; |
| 110 | default:break; |
| 111 | } |
| 112 | return 0; |
| 113 | } |
| 114 | |
| 115 | float VertexAttributeDataTypeToFloat(const dmGraphics::VertexAttribute::DataType data_type, const uint8_t* value_ptr) |
| 116 | { |
no test coverage detected