source: trunk/src/gl/gl_texture2d.cc @ 299

Last change on this file since 299 was 299, checked in by epyon, 11 years ago
  • all bind and update function for graphics objects are done via context (will simplify directx device, and allow for handles instead of objects)
File size: 1.6 KB
RevLine 
[43]1// Copyright (C) 2012-2013 Kornel Kisielewicz
2// This file is part of NV Libraries.
3// For conditions of distribution and use, see copyright notice in nv.hh
4
5#include "nv/gl/gl_texture2d.hh"
6
7#include "nv/gl/gl_enum.hh"
8#include "nv/lib/gl.hh"
9
10using namespace nv;
11
[292]12nv::gl_texture2d::gl_texture2d( ivec2 size, pixel_format aformat, datatype adatatype, sampler asampler, void* data /*= nullptr */ )
[49]13        : texture2d( size, aformat, adatatype, asampler ), m_name()
[43]14{
15        glBindTexture( GL_TEXTURE_2D, m_name.get_value() );
16
[160]17        // Detect if mipmapping was requested
18        if (( asampler.filter_min != sampler::LINEAR && asampler.filter_min != sampler::NEAREST ) ||
19                ( asampler.filter_max != sampler::LINEAR && asampler.filter_max != sampler::NEAREST ))
20        {
21                glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
22        }
23
[121]24        glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, (int)nv::sampler_filter_to_enum( m_sampler.filter_min ) );
25        glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, (int)nv::sampler_filter_to_enum( m_sampler.filter_max ) );
26        glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, (int)nv::sampler_wrap_to_enum( m_sampler.wrap_s) );
27        glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, (int)nv::sampler_wrap_to_enum( m_sampler.wrap_t) );
[43]28
29        glBindTexture( GL_TEXTURE_2D, 0 );
30
31        if (data)
32        {
[299]33                glBindTexture( GL_TEXTURE_2D, m_name.get_value() );
34                glTexImage2D( GL_TEXTURE_2D, 0, (GLint)nv::image_format_to_enum(m_format.format), m_size.x, m_size.y, 0, nv::image_format_to_enum(m_format.format), nv::datatype_to_gl_enum(m_format.type), data );
35                glBindTexture( GL_TEXTURE_2D, 0 );
[43]36        }
37}
38
Note: See TracBrowser for help on using the repository browser.