Browse Source

Fix Image+texture; Don't reverse imgs; Proper vexter coords

gh-pages
falkTX 11 years ago
parent
commit
6c7a04b415
7 changed files with 7081 additions and 7093 deletions
  1. +1
    -1
      .gitignore
  2. +4
    -4
      dgl/Image.hpp
  3. +15
    -27
      dgl/src/Image.cpp
  4. +1
    -1
      examples/Makefile
  5. +8
    -8
      examples/color.cpp
  6. +7051
    -7051
      examples/images_src/CatPics.cpp
  7. +1
    -1
      utils/png2rgba.py

+ 1
- 1
.gitignore View File

@@ -10,5 +10,5 @@

examples/app
examples/color
examples/image
examples/images
examples/nekobi-ui

+ 4
- 4
dgl/Image.hpp View File

@@ -45,9 +45,9 @@ public:
GLenum getFormat() const noexcept;
GLenum getType() const noexcept;

void draw() const;
void draw(int x, int y) const;
void draw(const Point<int>& pos) const;
void draw();
void draw(int x, int y);
void draw(const Point<int>& pos);

Image& operator=(const Image& image) noexcept;
bool operator==(const Image& image) const noexcept;
@@ -58,7 +58,7 @@ private:
Size<int> fSize;
GLenum fFormat;
GLenum fType;
mutable GLuint fTextureId;
GLuint fTextureId;
};

// -----------------------------------------------------------------------


+ 15
- 27
dgl/src/Image.cpp View File

@@ -16,8 +16,6 @@

#include "../Image.hpp"

#include <cstdio>

START_NAMESPACE_DGL

// -----------------------------------------------------------------------
@@ -115,12 +113,12 @@ GLenum Image::getType() const noexcept
return fType;
}

void Image::draw() const
void Image::draw()
{
draw(0, 0);
}

void Image::draw(int x, int y) const
void Image::draw(int x, int y)
{
if (! isValid())
return;
@@ -128,7 +126,8 @@ void Image::draw(int x, int y) const
glGenTextures(1, &fTextureId);
if (fTextureId == 0)
{
printf("texture Id still 0\n");
// invalidate image
fSize = Size<int>(0, 0);
return;
}

@@ -147,39 +146,28 @@ void Image::draw(int x, int y) const
float trans[] = { 0.0f, 0.0f, 0.0f, 0.0f };
glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, trans);

glPushMatrix();

const GLint w2 = getWidth()/2;
const GLint h2 = getHeight()/2;

glTranslatef(x+w2, y+h2, 0.0f);
const int width = getWidth();
const int height = getHeight();

glBegin(GL_QUADS);
glTexCoord2f(0.0f, 1.0f);
glVertex2i(-w2, -h2);

glTexCoord2f(1.0f, 1.0f);
glVertex2i(getWidth()-w2, -h2);
glTexCoord2f(0.0f, 0.0f);
glVertex2i(x, y);

glTexCoord2f(1.0f, 0.0f);
glVertex2i(getWidth()-w2, getHeight()-h2);
glVertex2i(x+width, y);

glTexCoord2f(0.0f, 0.0f);
glVertex2i(-w2, getHeight()-h2);
glEnd();
glTexCoord2f(1.0f, 1.0f);
glVertex2i(x+width, y+height);

glPopMatrix();
glTexCoord2f(0.0f, 1.0f);
glVertex2i(x, y+height);
glEnd();

glBindTexture(GL_TEXTURE_2D, 0);
glDisable(GL_TEXTURE_2D);

// glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
// glPixelStorei(GL_PACK_ALIGNMENT, 1);
// glRasterPos2i(x, fSize.getHeight()+y);
// glDrawPixels(fSize.getWidth(), fSize.getHeight(), fFormat, fType, fRawData);
}

void Image::draw(const Point<int>& pos) const
void Image::draw(const Point<int>& pos)
{
draw(pos.getX(), pos.getY());
}


+ 1
- 1
examples/Makefile View File

@@ -38,7 +38,7 @@ app: app.cpp ../dgl/*
color: color.cpp ../dgl/*
$(CXX) $< $(BUILD_CXX_FLAGS) $(LINK_FLAGS) -o $@

images: images.cpp ../dgl/*
images: images.cpp images_src/* ../dgl/*
$(CXX) $< $(BUILD_CXX_FLAGS) $(LINK_FLAGS) -o $@

nekobi-ui: nekobi-ui.cpp nekobi-ui_src/* ../dgl/*


+ 8
- 8
examples/color.cpp View File

@@ -108,16 +108,16 @@ private:
glColor3b(r, g, b);

glBegin(GL_QUADS);
glTexCoord2i(x, y);
glTexCoord2f(0.0f, 0.0f);
glVertex2i(x, y);

glTexCoord2i(x+width, y);
glTexCoord2f(1.0f, 0.0f);
glVertex2i(x+width, y);

glTexCoord2i(x+width, y+height);
glTexCoord2f(1.0f, 1.0f);
glVertex2i(x+width, y+height);

glTexCoord2i(x, y+height);
glTexCoord2f(0.0f, 1.0f);
glVertex2i(x, y+height);
glEnd();

@@ -131,16 +131,16 @@ private:
glColor3b(100-r, 100-g, 100-b);

glBegin(GL_QUADS);
glTexCoord2i(x, y);
glTexCoord2f(0.0f, 0.0f);
glVertex2i(x, y);

glTexCoord2i(x+width, y);
glTexCoord2f(1.0f, 0.0f);
glVertex2i(x+width, y);

glTexCoord2i(x+width, y+height);
glTexCoord2f(1.0f, 1.0f);
glVertex2i(x+width, y+height);

glTexCoord2i(x, y+height);
glTexCoord2f(0.0f, 1.0f);
glVertex2i(x, y+height);
glEnd();
}


+ 7051
- 7051
examples/images_src/CatPics.cpp
File diff suppressed because it is too large
View File


+ 1
- 1
utils/png2rgba.py View File

@@ -31,7 +31,7 @@ def png2rgba(namespace, filenames):
png = Image.open(filename)
pngNumpy = numpy.array(png)
pngData = pngNumpy.tolist()
pngData.reverse()
#pngData.reverse()

height = len(pngData)
for dataBlock in pngData:


Loading…
Cancel
Save