source: trunk/packages/vizservers/nanovis/vr3d/vrTexture2D.cpp @ 2103

Last change on this file since 2103 was 2103, checked in by ldelgass, 14 years ago

Remove unused _pixels data member, fixes warning about deleting a void pointer
being undefined.

  • Property svn:eol-style set to native
File size: 2.6 KB
Line 
1#include <vr3d/vrTexture2D.h>
2
3#include <string.h>
4#include <math.h>
5#include <valarray>
6
7#ifdef _WIN32
8inline unsigned int log2(unsigned int x)
9{
10    unsigned int i = 0;
11    while ( ( x = ( x >> 1 ) ) != 0 ) i++;
12        return i;     
13}
14#endif
15
16
17vrTexture2D::vrTexture2D(bool depth)
18: _width(0), _depthTexture(depth)
19{
20        _target = TT_TEXTURE_2D;
21        _wrapT = TW_CLAMP_TO_EDGE;
22        _wrapS =TW_CLAMP_TO_EDGE;
23}
24
25vrTexture2D::~vrTexture2D()
26{
27}
28
29void vrTexture2D::setPixels(COLORFORMAT colorFormat, DATATYPE type, int width, int height, void* data)
30
31{
32    TEXTARGET target;
33#ifndef OPENGLES
34    if ((pow(2.0f, (float)log2(width)) != width) &&
35                (pow(2.0f, (float)log2(height)) != height))
36        {
37                if (type == DT_FLOAT)
38                {
39                        target = TT_TEXTURE_RECTANGLE;
40                }
41                else
42                {
43                        target = TT_TEXTURE_2D;
44                }
45        }
46        else
47        {
48                target = TT_TEXTURE_2D;
49        }
50#else
51        target = TT_TEXTURE_2D;
52#endif
53
54    setPixels(target, colorFormat,  colorFormat, type, width, height, data);
55}
56
57void vrTexture2D::setPixels(TEXTARGET target,  COLORFORMAT internalColorFormat, COLORFORMAT colorFormat, DATATYPE type, int width, int height, void* data)
58{
59    _target = target;
60        _width = width;
61        _height = height;
62        _type = type;
63    _internalColorFormat = internalColorFormat;
64        _colorFormat = colorFormat;
65        _compCount = GetNumComponent(_colorFormat);
66
67        if (_objectID)
68        {
69                glDeleteTextures(1, &_objectID);
70        }
71
72        //glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
73        glGenTextures(1, &_objectID);
74        glBindTexture(_target, _objectID);
75        glTexImage2D(_target, 0, _internalColorFormat, _width, _height, 0, _colorFormat, _type, data);
76    glTexParameteri(_target, GL_TEXTURE_MAG_FILTER, _magFilter);
77        glTexParameteri(_target, GL_TEXTURE_MIN_FILTER, _minFilter);
78       
79        // TBD...
80#ifndef OPENGLES
81        if (_depthTexture)
82        {
83                //glTexParameteri(_target, GL_DEPTH_TEXTURE_MODE, GL_INTENSITY);
84                glTexParameteri(_target, GL_DEPTH_TEXTURE_MODE, GL_LUMINANCE);
85               
86                glTexParameteri(_target, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL);
87                glTexParameteri(_target, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_R_TO_TEXTURE);
88
89                //glDrawBuffer(GL_NONE);
90                //glReadBuffer(GL_NONE);
91        }
92#endif
93
94       
95        //TBD..
96        glTexParameterf(_target, GL_TEXTURE_WRAP_S, _wrapS);
97        glTexParameterf(_target, GL_TEXTURE_WRAP_T, _wrapT);
98
99       
100}
101
102void vrTexture2D::updatePixels(void* data)
103{
104        glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
105        glBindTexture(_target, _objectID);
106        glTexParameteri(_target, GL_TEXTURE_WRAP_S, _wrapS);
107        glTexParameteri(_target, GL_TEXTURE_WRAP_S, _wrapT);
108        glTexParameteri(_target, GL_TEXTURE_MAG_FILTER, _magFilter);
109        glTexParameteri(_target, GL_TEXTURE_MIN_FILTER, _minFilter);
110        glTexImage2D(_target, 0, _internalColorFormat, _width, _height, 0, _colorFormat, _type, data);
111}
112
Note: See TracBrowser for help on using the repository browser.