3
#include "NuxGraphics/GraphicsDisplay.h"
4
#include "NuxGraphics/GLShader.h"
5
#include "NuxGraphics/GpuDevice.h"
6
#include "NuxGraphics/GLDeviceObjects.h"
7
#include "NuxGraphics/GLShader.h"
8
#include "NuxGraphics/GraphicsEngine.h"
10
#include "NuxMesh/NWorldArchiveManager.h"
11
#include "NuxMesh/NMeshObject.h"
13
#include "PixelBlocks.h"
15
PixelBlocks::PixelBlocks()
17
_pixel_block_size = 1;
19
nux::NString Path = PKGDATADIR"/textures/nfl.png";
20
m_Texture = new nux::Texture2D ();
21
m_Texture->Update (Path.GetTCharPtr ());
22
nux::ObjectPtr<nux::CachedBaseTexture> DeviceTexture = nux::GetGraphicsDisplay()->GetGraphicsEngine()->CacheResource (m_Texture);
23
DeviceTexture->m_Texture->SetWrap (GL_CLAMP, GL_CLAMP, GL_CLAMP);
24
DeviceTexture->m_Texture->SetFiltering (GL_NEAREST, GL_NEAREST);
27
PixelBlocks::~PixelBlocks ()
29
m_Texture->UnReference ();
32
void PixelBlocks::Draw(nux::GraphicsEngine& GfxContext, nux::Geometry viewport, const nux::Matrix4 &CameraMatrix, const nux::Matrix4 &ProjectionMatrix)
36
int X = (viewport.GetWidth () - m_Texture->GetWidth () - 2 * margin) / 2.0f;
37
int Y = (viewport.GetHeight () - m_Texture->GetHeight () - 2 * margin) / 2.0f;
39
RenderEffect(GfxContext, viewport, 0, X, Y);
42
void PixelBlocks::RenderEffect(nux::GraphicsEngine& GfxContext, nux::Geometry viewport, int margin, int X, int Y)
44
unsigned int window_width, window_height;
45
window_width = viewport.GetWidth();
46
window_height = viewport.GetHeight();
48
nux::ObjectPtr< nux::CachedBaseTexture > DeviceTexture = GfxContext.CacheResource(m_Texture);
50
unsigned int offset = margin;
51
int quad_width = m_Texture->GetWidth();
52
int quad_height = m_Texture->GetHeight();
54
unsigned int buffer_width = quad_width + 2*offset;
55
unsigned int buffer_height = quad_height + 2*offset;
56
int x = (buffer_width - quad_width)/2;
57
int y = (buffer_height - quad_height)/2;
59
nux::TexCoordXForm texxform;
61
m_MainColorRT1 = GfxContext.QRP_GetPixelBlocks (DeviceTexture->m_Texture, texxform, nux::color::White, _pixel_block_size);
62
GfxContext.SetOrthographicProjectionMatrix (window_width, window_height);
64
m_MainColorRT1->SetFiltering (GL_LINEAR, GL_LINEAR);
65
texxform.flip_v_coord = true;
66
GfxContext.QRP_1Tex (X, Y, quad_width, quad_height, m_MainColorRT1, texxform, _texture_color_mod);
70
void PixelBlocks::SetPixelBlockSize (int pixel_block_size, MainSceneView* scene)
72
_pixel_block_size = pixel_block_size;
77
void PixelBlocks::SetTextureColorModulation (float r, float g, float b, float a, MainSceneView* scene)
79
_texture_color_mod = nux::Color(r, g, b, a);