Replaces border color of sampler by enum.

This was SVN commit r27134.
This commit is contained in:
Vladislav Belov 2022-10-08 09:40:06 +00:00
parent ecab4595c3
commit 178850cb23
3 changed files with 22 additions and 3 deletions

View File

@ -39,7 +39,7 @@ Desc MakeDefaultSampler(Filter filter, AddressMode addressMode)
desc.addressModeW = addressMode;
desc.anisotropyEnabled = false;
desc.mipLODBias = 0.0f;
desc.borderColor = CColor(0.0f, 0.0f, 0.0f, 0.0f);
desc.borderColor = BorderColor::TRANSPARENT_BLACK;
desc.compareEnabled = false;
return desc;
}

View File

@ -46,6 +46,13 @@ enum class AddressMode
CLAMP_TO_BORDER,
};
enum class BorderColor
{
TRANSPARENT_BLACK,
OPAQUE_BLACK,
OPAQUE_WHITE
};
struct Desc
{
Filter magFilter;
@ -58,7 +65,7 @@ struct Desc
bool anisotropyEnabled;
float maxAnisotropy;
// When some filter is CLAMP_TO_BORDER.
CColor borderColor;
BorderColor borderColor;
bool compareEnabled;
CompareOp compareOp;
};

View File

@ -152,7 +152,19 @@ std::unique_ptr<CTexture> CTexture::Create(CDevice* device, const char* name,
defaultSamplerDesc.addressModeV == Sampler::AddressMode::CLAMP_TO_BORDER ||
defaultSamplerDesc.addressModeW == Sampler::AddressMode::CLAMP_TO_BORDER)
{
glTexParameterfv(target, GL_TEXTURE_BORDER_COLOR, defaultSamplerDesc.borderColor.AsFloatArray().data());
CColor borderColor(0.0f, 0.0f, 0.0f, 0.0f);
switch (defaultSamplerDesc.borderColor)
{
case Sampler::BorderColor::TRANSPARENT_BLACK:
break;
case Sampler::BorderColor::OPAQUE_BLACK:
borderColor = CColor(0.0f, 0.0f, 0.0f, 1.0f);
break;
case Sampler::BorderColor::OPAQUE_WHITE:
borderColor = CColor(1.0f, 1.0f, 1.0f, 1.0f);
break;
}
glTexParameterfv(target, GL_TEXTURE_BORDER_COLOR, borderColor.AsFloatArray().data());
}
ogl_WarnIfError();