1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #include "wrapper/Texture.h"
- Texture::Texture(const TextureFormat& format) : format(format), texture(0) {
- glGenTextures(1, &texture);
- setNearestFilter();
- setRepeatWrap();
- }
- Texture::~Texture() {
- glDeleteTextures(1, &texture);
- }
- void Texture::setFilter(GLint param) {
- bind();
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, param);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, param);
- }
- void Texture::setNearestFilter() {
- setFilter(GL_NEAREST);
- }
- void Texture::setLinearFilter() {
- setFilter(GL_LINEAR);
- }
- void Texture::setWrap(GLint param) {
- bind();
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, param);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, param);
- }
- void Texture::setRepeatWrap() {
- setWrap(GL_REPEAT);
- }
- void Texture::setClampWrap() {
- setWrap(GL_CLAMP_TO_EDGE);
- }
- void Texture::setData(int width, int height, const void* data) {
- glBindTexture(GL_TEXTURE_2D, texture);
- glTexImage2D(GL_TEXTURE_2D, 0, format.internalformat, width, height, 0, format.format, format.type, data);
- }
- void Texture::bind() const {
- glBindTexture(GL_TEXTURE_2D, texture);
- }
- void Texture::bindTo(int index) const {
- glActiveTexture(GL_TEXTURE0 + index);
- bind();
- }
|