MCPcopy Create free account
hub / github.com/RavEngine/RavEngine / ByteBuffer GenerateImageBuffer

Function ByteBuffer GenerateImageBuffer

deps/LLGL/sources/Core/ImageFlags.cpp:805–837  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

803}
804
805LLGL_EXPORT ByteBuffer GenerateImageBuffer(
806 ImageFormat format,
807 DataType dataType,
808 std::size_t imageSize,
809 const ColorRGBAd& fillColor)
810{
811 /* Convert fill color data type */
812 VariantColor fillColor0 { UninitializeTag{} };
813 VariantBuffer fillBuffer0 { &fillColor0 };
814
815 WriteNormalizedTypedVariant(dataType, fillBuffer0, 0, fillColor.r);
816 WriteNormalizedTypedVariant(dataType, fillBuffer0, 1, fillColor.g);
817 WriteNormalizedTypedVariant(dataType, fillBuffer0, 2, fillColor.b);
818 WriteNormalizedTypedVariant(dataType, fillBuffer0, 3, fillColor.a);
819
820 /* Convert fill color format */
821 VariantColor fillColor1 { UninitializeTag{} };
822 VariantBuffer fillBuffer1 { &fillColor1 };
823 VariantConstBuffer fillBuffer2 { fillBuffer0.raw };
824
825 ReadRGBAFormattedVariant(ImageFormat::RGBA, dataType, fillBuffer2, 0, fillColor1);
826 WriteRGBAFormattedVariant(format, dataType, fillBuffer1, 0, fillColor1);
827
828 /* Allocate image buffer */
829 const auto bytesPerPixel = DataTypeSize(dataType) * ImageFormatSize(format);
830 auto imageBuffer = MakeUniqueArray<char>(bytesPerPixel * imageSize);
831
832 /* Initialize image buffer with fill color */
833 for (std::size_t i = 0; i < imageSize; ++i)
834 ::memcpy(imageBuffer.get() + bytesPerPixel * i, fillBuffer1.raw, bytesPerPixel);
835
836 return imageBuffer;
837}
838
839LLGL_EXPORT ByteBuffer GenerateEmptyByteBuffer(std::size_t bufferSize, bool initialize)
840{

Callers

nothing calls this directly

Calls 5

ReadRGBAFormattedVariantFunction · 0.85
memcpyFunction · 0.85
getMethod · 0.45

Tested by

no test coverage detected