#include "pch.h"
#include "log.h"
#include "node_image_texture.h"
#include "shader.h"
#include "node_image.h"

Node* NodeImageTexture::clone_instantiate() const
{
    return new NodeImageTexture();
}

void NodeImageTexture::clone_copy(Node* dest) const
{
    Node::clone_copy(dest);
    NodeImageTexture* n = static_cast<NodeImageTexture*>(dest);
    n->tex = tex;
}

void NodeImageTexture::draw()
{
    tex.bind();
    auto& sampler = tex.has_mips ? NodeImage::m_sampler_mips : NodeImage::m_sampler;
    sampler.bind(0);
    glEnable(GL_BLEND);
    ShaderManager::use(kShader::Texture);
    ShaderManager::u_int(kShaderUniform::Tex, 0);
    ShaderManager::u_mat4(kShaderUniform::MVP, m_mvp);
    NodeImage::m_plane.draw_fill();
    sampler.unbind();
    tex.unbind();
    glDisable(GL_BLEND);
}
