nvidia-texture-tools/wiki/ApiDesignIssues.wiki

73 lines
2.2 KiB
Plaintext

#summary API design issues
#labels Phase-Design
== General Issues ==
* does nvtt have state? should we have a context? Don't use globals/statics.
== !InputOptions ==
* ~~Default mipmap filter should be Box instead of Kaiser.~~ (Fixed)
* Remove `Format_LATC`, stop adding more aliases.
=== Alpha transparency ===
* `alphaTransparency` should not be specified in setFormat.
* Add `setAlphaMode(AlphaMode mode)`
Where `AlphaMode` could be:
* !AlphaMode_None
* !AlphaMode_Transparency
* !AlphaMode_Premultiplied
None is the default (treats alpha as a regular channel) while Transparency and Premultiplied are hints. Currently there are some compressors that only support None, others that only support Transparency.
=== Mipmapping options ===
~~Option 1:~~
* Deprecate setMipmapping.
* Add `setMipmapFilter(MipmapFilter filter)`
* ~~Add maxLevel argument to `setTextureLayout`~~
* To disable mipmap output set maxLevel = 0.
Option 2:
* Deprecate setMipmapping.
* Add `setMipmapFilter(MipmapFilter filter)`
* Add `enableMipmaps(bool enable)`
* Add `setMipmapMaxLevel(int maxLevel)`
Option 3:
* Add `setMipmapFilter(MipmapFilter filter)`
* Remove filter argument from `setMipmapping`: `setMipmapping(bool enabled, int maxLevel)`
Option 4:
* Leave things as is.
== !CompressionOptions ==
* `enableHardwareCompressor`, should be called `enableCudaCompressor` or `enableGpuCompressor`.
* `Quantization` should be a compression option.
* remove error threshold from setQuality, it's not used.
* `setColorWeights` should take an alpha weight, not used right now, but useful for future formats.
== !OutputOptions ==
* Should be a pimpl like `InputOptions` and `CompressionOptions`. Member attributes should be hidden.
* Add `setFileName()` member to output dds file directly instead of using output handler.
=== Output Handling ===
* `OutputHandler::writeData` should return false to signal a write error and stop processing.
* The `mipmap` method of `OutputHandler` should have been called `image` or `beginImage`.
=== Error Handling ===
* !Error_Unknown should be 0
* !Error_UserInterruption is not being used and could be removed.