Compare commits
3 Commits
master
...
framebuffe
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6adef607f2 | ||
|
|
996564ed7d | ||
|
|
08776360c2 |
6
.gitignore
vendored
6
.gitignore
vendored
@@ -24,9 +24,9 @@
|
|||||||
#*.lib
|
#*.lib
|
||||||
|
|
||||||
# Executables
|
# Executables
|
||||||
*.exe
|
#*.exe
|
||||||
*.out
|
#*.out
|
||||||
*.app
|
#*.app
|
||||||
|
|
||||||
# ---> C
|
# ---> C
|
||||||
# Object files
|
# Object files
|
||||||
|
|||||||
@@ -1,121 +0,0 @@
|
|||||||
<svg viewBox="19 98 883 423" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
||||||
<g style="fill: rgb(116, 237, 104); stroke-width: 2; stroke: rgb(0, 0, 0);">
|
|
||||||
<rect x="100" y="100" width="80" height="60"/>
|
|
||||||
<rect x="160" y="220" width="100" height="80"/>
|
|
||||||
<rect x="300" y="217" width="120" height="86"/>
|
|
||||||
<rect x="300" y="440" width="100" height="80"/>
|
|
||||||
<rect x="460" y="220" width="120" height="80"/>
|
|
||||||
<rect x="480" y="360" width="80" height="60"/>
|
|
||||||
<rect x="619.1" y="220" width="121.8" height="80"/>
|
|
||||||
<rect x="780" y="220" width="120" height="80"/>
|
|
||||||
</g>
|
|
||||||
<g style="fill: none; stroke-width: 2; stroke: rgb(0, 0, 0);">
|
|
||||||
<polyline points="400,460 520,460 520,431"/>
|
|
||||||
<polyline points="411,500 840,500 840,311"/>
|
|
||||||
<polyline points="449,280 439,280 439,460 460,460"/>
|
|
||||||
<polyline points="89,130 60,130 60,220 40,220"/>
|
|
||||||
</g>
|
|
||||||
<g style="fill: none; stroke-width: 2; stroke: rgb(0, 0, 0);">
|
|
||||||
<line x1="260" y1="260" x2="289" y2="260"/>
|
|
||||||
<line x1="580" y1="260" x2="608.1" y2="260"/>
|
|
||||||
<line x1="740.9" y1="260" x2="769" y2="260"/>
|
|
||||||
<line x1="520" y1="360" x2="520" y2="311"/>
|
|
||||||
<line x1="420" y1="260" x2="449" y2="260"/>
|
|
||||||
<line x1="149" y1="260" x2="20" y2="260"/>
|
|
||||||
<line x1="140" y1="160" x2="140" y2="249"/>
|
|
||||||
<line x1="289" y1="480" x2="71" y2="480"/>
|
|
||||||
<line x1="120" y1="160" x2="120" y2="469"/>
|
|
||||||
<line x1="60" y1="260" x2="60" y2="480"/>
|
|
||||||
<line x1="20" y1="220" x2="49" y2="220"/>
|
|
||||||
</g>
|
|
||||||
<g style="fill: rgb(0, 0, 0); stroke-width: 2; stroke: rgb(0, 0, 0);">
|
|
||||||
<polygon points="289,265 299,260 289,255"/>
|
|
||||||
<polygon points="608.1,265 618.1,260 608.1,255"/>
|
|
||||||
<polygon points="769,265 779,260 769,255"/>
|
|
||||||
<polygon points="525,431 520,421 515,431"/>
|
|
||||||
<polygon points="525,311 520,301 515,311"/>
|
|
||||||
<polygon points="411,495 401,500 411,505"/>
|
|
||||||
<polygon points="845,311 840,301 835,311"/>
|
|
||||||
<polygon points="449,285 459,280 449,275"/>
|
|
||||||
<polygon points="449,265 459,260 449,255"/>
|
|
||||||
<polygon points="149,265 159,260 149,255"/>
|
|
||||||
<polygon points="135,249 140,259 145,249"/>
|
|
||||||
<polygon points="289,485 299,480 289,475"/>
|
|
||||||
<polygon points="71,475 61,480 71,485"/>
|
|
||||||
<polygon points="115,469 120,479 125,469"/>
|
|
||||||
<polygon points="40,265 50,260 40,255"/>
|
|
||||||
<polygon points="40,225 50,220 40,215"/>
|
|
||||||
<polygon points="89,135 99,130 89,125"/>
|
|
||||||
</g>
|
|
||||||
<switch>
|
|
||||||
<g systemLanguage="es" font-size="12.8" style="fill: rgb(0, 0, 0); text-anchor: middle; font-family: sans-serif; font-style: normal; font-weight: 700;">
|
|
||||||
<text>
|
|
||||||
<tspan x="140" y="125.9">Lista</tspan>
|
|
||||||
<tspan x="140" y="141.9">Display</tspan>
|
|
||||||
</text>
|
|
||||||
<text>
|
|
||||||
<tspan x="210" y="263.9">Evaluación</tspan>
|
|
||||||
</text>
|
|
||||||
<text>
|
|
||||||
<tspan x="360" y="239.9">Operaciones</tspan>
|
|
||||||
<tspan x="360" y="255.9">por vértices</tspan>
|
|
||||||
<tspan x="360" y="271.9">Ensamblado</tspan>
|
|
||||||
<tspan x="360" y="287.9">de primitivas</tspan>
|
|
||||||
</text>
|
|
||||||
<text>
|
|
||||||
<tspan x="350" y="475.9">Operaciones</tspan>
|
|
||||||
<tspan x="350" y="491.9">de píxeles</tspan>
|
|
||||||
</text>
|
|
||||||
<text>
|
|
||||||
<tspan x="520" y="263.9">Rasterización</tspan>
|
|
||||||
</text>
|
|
||||||
<text>
|
|
||||||
<tspan x="520" y="378.9">Memoria</tspan>
|
|
||||||
<tspan x="520" y="394.9">de</tspan>
|
|
||||||
<tspan x="520" y="410.9">Texturas</tspan>
|
|
||||||
</text>
|
|
||||||
<text>
|
|
||||||
<tspan x="680" y="255.9">Operaciones</tspan>
|
|
||||||
<tspan x="680" y="271.9">por fragmentos</tspan>
|
|
||||||
</text>
|
|
||||||
<text>
|
|
||||||
<tspan x="840" y="255.9">Frame</tspan>
|
|
||||||
<tspan x="840" y="271.9">Buffer</tspan>
|
|
||||||
</text>
|
|
||||||
</g>
|
|
||||||
<g font-size="12.8" style="fill: rgb(0, 0, 0); text-anchor: middle; font-family: sans-serif; font-style: normal; font-weight: 700;">
|
|
||||||
<text>
|
|
||||||
<tspan x="140" y="125.9">Display</tspan>
|
|
||||||
<tspan x="140" y="141.9">List</tspan>
|
|
||||||
</text>
|
|
||||||
<text>
|
|
||||||
<tspan x="210" y="263.9">Evaluator</tspan>
|
|
||||||
</text>
|
|
||||||
<text>
|
|
||||||
<tspan x="360" y="239.9">Per-Vertex</tspan>
|
|
||||||
<tspan x="360" y="255.9">Operations</tspan>
|
|
||||||
<tspan x="360" y="271.9">Primitive</tspan>
|
|
||||||
<tspan x="360" y="287.9">Assembly</tspan>
|
|
||||||
</text>
|
|
||||||
<text>
|
|
||||||
<tspan x="350" y="475.9">Pixel</tspan>
|
|
||||||
<tspan x="350" y="491.9">Operations</tspan>
|
|
||||||
</text>
|
|
||||||
<text>
|
|
||||||
<tspan x="520" y="263.9">Rasterization</tspan>
|
|
||||||
</text>
|
|
||||||
<text>
|
|
||||||
<tspan x="520" y="385.9">Texture</tspan>
|
|
||||||
<tspan x="520" y="401.9">Memory</tspan>
|
|
||||||
</text>
|
|
||||||
<text>
|
|
||||||
<tspan x="680" y="255.9">Per-Fragment</tspan>
|
|
||||||
<tspan x="680" y="271.9">Operations</tspan>
|
|
||||||
</text>
|
|
||||||
<text>
|
|
||||||
<tspan x="840" y="255.9">Frame</tspan>
|
|
||||||
<tspan x="840" y="271.9">Buffer</tspan>
|
|
||||||
</text>
|
|
||||||
</g>
|
|
||||||
</switch>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 4.3 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 2.4 MiB |
BIN
opengl-test-two/bin/Debug/opengl-test-two.exe
Normal file
BIN
opengl-test-two/bin/Debug/opengl-test-two.exe
Normal file
Binary file not shown.
@@ -1,10 +0,0 @@
|
|||||||
#ifndef LOADERS_H
|
|
||||||
#define LOADERS_H
|
|
||||||
|
|
||||||
#define GLEW_STATIC
|
|
||||||
#include <GL/glew.h>
|
|
||||||
|
|
||||||
int InitLoaders();
|
|
||||||
GLuint LoadTexture(char *filename,int *textw,int *texth);
|
|
||||||
GLuint LoadShaders(const char * vertex_file_path,const char * fragment_file_path);
|
|
||||||
#endif // LOADERS_H
|
|
||||||
@@ -4,13 +4,197 @@
|
|||||||
#include <GL/glew.h>
|
#include <GL/glew.h>
|
||||||
#include <GLFW/glfw3.h>
|
#include <GLFW/glfw3.h>
|
||||||
#include <SDL2/SDL.h>
|
#include <SDL2/SDL.h>
|
||||||
|
#include <SDL2/SDL_image.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <iostream>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
#include <vector>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include "loaders.h"
|
|
||||||
|
GLuint LoadTexture(char *filename,int *textw,int *texth) {
|
||||||
|
SDL_Surface *surface;
|
||||||
|
GLuint textureid;
|
||||||
|
int mode;
|
||||||
|
surface = IMG_Load(filename);
|
||||||
|
// Or if you don't use SDL_image you can use SDL_LoadBMP here instead:
|
||||||
|
// surface = SDL_LoadBMP(filename);
|
||||||
|
|
||||||
|
// could not load filename
|
||||||
|
if (!surface) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// work out what format to tell glTexImage2D to use...
|
||||||
|
if (surface->format->BytesPerPixel == 3) { // RGB 24bit
|
||||||
|
mode = GL_RGB;
|
||||||
|
|
||||||
|
} else if (surface->format->BytesPerPixel == 4) { // RGBA 32bit
|
||||||
|
mode = GL_RGBA;
|
||||||
|
} else {
|
||||||
|
SDL_FreeSurface(surface);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
*textw=surface->w;
|
||||||
|
*texth=surface->h;
|
||||||
|
// create one texture name
|
||||||
|
glGenTextures(1, &textureid);
|
||||||
|
// tell opengl to use the generated texture name
|
||||||
|
glBindTexture(GL_TEXTURE_2D, textureid);
|
||||||
|
// this reads from the sdl surface and puts it into an opengl texture
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, 0, mode, surface->w, surface->h, 0, mode, GL_UNSIGNED_BYTE, surface->pixels);
|
||||||
|
// these affect how this texture is drawn later on...glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||||
|
// clean up
|
||||||
|
SDL_FreeSurface(surface);
|
||||||
|
return textureid;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
GLuint LoadShaders(const char * vertex_file_path,const char * fragment_file_path){
|
||||||
|
|
||||||
|
// Create the shaders
|
||||||
|
GLuint VertexShaderID = glCreateShader(GL_VERTEX_SHADER);
|
||||||
|
GLuint FragmentShaderID = glCreateShader(GL_FRAGMENT_SHADER);
|
||||||
|
|
||||||
|
// Read the Vertex Shader code from the file
|
||||||
|
std::string VertexShaderCode;
|
||||||
|
std::ifstream VertexShaderStream(vertex_file_path, std::ios::in);
|
||||||
|
if(VertexShaderStream.is_open()){
|
||||||
|
std::string Line = "";
|
||||||
|
while(getline(VertexShaderStream, Line))
|
||||||
|
VertexShaderCode += "\n" + Line;
|
||||||
|
VertexShaderStream.close();
|
||||||
|
}else{
|
||||||
|
printf("Impossible to open %s. Are you in the right directory ? Don't forget to read the FAQ !\n", vertex_file_path);
|
||||||
|
getchar();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read the Fragment Shader code from the file
|
||||||
|
std::string FragmentShaderCode;
|
||||||
|
std::ifstream FragmentShaderStream(fragment_file_path, std::ios::in);
|
||||||
|
if(FragmentShaderStream.is_open()){
|
||||||
|
std::string Line = "";
|
||||||
|
while(getline(FragmentShaderStream, Line))
|
||||||
|
FragmentShaderCode += "\n" + Line;
|
||||||
|
FragmentShaderStream.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
GLint Result = GL_FALSE;
|
||||||
|
int InfoLogLength;
|
||||||
|
|
||||||
|
|
||||||
|
// Compile Vertex Shader
|
||||||
|
printf("Compiling shader : %s\n", vertex_file_path);
|
||||||
|
char const * VertexSourcePointer = VertexShaderCode.c_str();
|
||||||
|
glShaderSource(VertexShaderID, 1, &VertexSourcePointer , NULL);
|
||||||
|
glCompileShader(VertexShaderID);
|
||||||
|
|
||||||
|
// Check Vertex Shader
|
||||||
|
glGetShaderiv(VertexShaderID, GL_COMPILE_STATUS, &Result);
|
||||||
|
glGetShaderiv(VertexShaderID, GL_INFO_LOG_LENGTH, &InfoLogLength);
|
||||||
|
if ( InfoLogLength > 0 ){
|
||||||
|
std::vector<char> VertexShaderErrorMessage(InfoLogLength+1);
|
||||||
|
glGetShaderInfoLog(VertexShaderID, InfoLogLength, NULL, &VertexShaderErrorMessage[0]);
|
||||||
|
printf("%s\n", &VertexShaderErrorMessage[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Compile Fragment Shader
|
||||||
|
printf("Compiling shader : %s\n", fragment_file_path);
|
||||||
|
char const * FragmentSourcePointer = FragmentShaderCode.c_str();
|
||||||
|
glShaderSource(FragmentShaderID, 1, &FragmentSourcePointer , NULL);
|
||||||
|
glCompileShader(FragmentShaderID);
|
||||||
|
|
||||||
|
// Check Fragment Shader
|
||||||
|
glGetShaderiv(FragmentShaderID, GL_COMPILE_STATUS, &Result);
|
||||||
|
glGetShaderiv(FragmentShaderID, GL_INFO_LOG_LENGTH, &InfoLogLength);
|
||||||
|
if ( InfoLogLength > 0 ){
|
||||||
|
std::vector<char> FragmentShaderErrorMessage(InfoLogLength+1);
|
||||||
|
glGetShaderInfoLog(FragmentShaderID, InfoLogLength, NULL, &FragmentShaderErrorMessage[0]);
|
||||||
|
printf("%s\n", &FragmentShaderErrorMessage[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Link the program
|
||||||
|
printf("Linking program\n");
|
||||||
|
GLuint ProgramID = glCreateProgram();
|
||||||
|
glAttachShader(ProgramID, VertexShaderID);
|
||||||
|
glAttachShader(ProgramID, FragmentShaderID);
|
||||||
|
glLinkProgram(ProgramID);
|
||||||
|
|
||||||
|
// Check the program
|
||||||
|
glGetProgramiv(ProgramID, GL_LINK_STATUS, &Result);
|
||||||
|
glGetProgramiv(ProgramID, GL_INFO_LOG_LENGTH, &InfoLogLength);
|
||||||
|
if ( InfoLogLength > 0 ){
|
||||||
|
std::vector<char> ProgramErrorMessage(InfoLogLength+1);
|
||||||
|
glGetProgramInfoLog(ProgramID, InfoLogLength, NULL, &ProgramErrorMessage[0]);
|
||||||
|
printf("%s\n", &ProgramErrorMessage[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
glDetachShader(ProgramID, VertexShaderID);
|
||||||
|
glDetachShader(ProgramID, FragmentShaderID);
|
||||||
|
|
||||||
|
glDeleteShader(VertexShaderID);
|
||||||
|
glDeleteShader(FragmentShaderID);
|
||||||
|
|
||||||
|
return ProgramID;
|
||||||
|
}
|
||||||
|
|
||||||
|
GLuint WriteTexture(int textw, int texth){
|
||||||
|
// The framebuffer, which regroups 0, 1, or more textures, and 0 or 1 depth buffer.
|
||||||
|
GLuint FramebufferName = 0;
|
||||||
|
glGenFramebuffers(1, &FramebufferName);
|
||||||
|
glBindFramebuffer(GL_FRAMEBUFFER, FramebufferName);
|
||||||
|
|
||||||
|
// The texture we're going to render to
|
||||||
|
GLuint renderedTexture;
|
||||||
|
glGenTextures(1, &renderedTexture);
|
||||||
|
|
||||||
|
// "Bind" the newly created texture : all future texture functions will modify this texture
|
||||||
|
glBindTexture(GL_TEXTURE_2D, renderedTexture);
|
||||||
|
|
||||||
|
// Give an empty image to OpenGL ( the last "0" )
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGB, textw, texth, 0,GL_RGB, GL_UNSIGNED_BYTE, 0);
|
||||||
|
|
||||||
|
// Poor filtering. Needed !
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
|
|
||||||
|
// The depth buffer -- OPTIONAL, REMOVE WHEN NOT NEEDED
|
||||||
|
GLuint depthrenderbuffer;
|
||||||
|
glGenRenderbuffers(1, &depthrenderbuffer);
|
||||||
|
glBindRenderbuffer(GL_RENDERBUFFER, depthrenderbuffer);
|
||||||
|
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, 1024, 768);
|
||||||
|
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthrenderbuffer);
|
||||||
|
|
||||||
|
// Set "renderedTexture" as our colour attachement #0
|
||||||
|
glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, renderedTexture, 0);
|
||||||
|
|
||||||
|
// Set the list of draw buffers.
|
||||||
|
GLenum DrawBuffers[1] = {GL_COLOR_ATTACHMENT0};
|
||||||
|
glDrawBuffers(1, DrawBuffers); // "1" is the size of DrawBuffers
|
||||||
|
|
||||||
|
// Always check that our framebuffer is ok
|
||||||
|
if(glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// Render to our framebuffer
|
||||||
|
glBindFramebuffer(GL_FRAMEBUFFER, FramebufferName);
|
||||||
|
glViewport(0, 0, textw, texth);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char* args[]) {
|
int main(int argc, char* args[]) {
|
||||||
GLFWwindow* window;
|
GLFWwindow* window;
|
||||||
GLuint texFG, texBG;
|
GLuint tex1, tex2;
|
||||||
int textw, texth;
|
int textw, texth;
|
||||||
int textw2, texth2;
|
int textw2, texth2;
|
||||||
|
|
||||||
@@ -37,16 +221,16 @@ int main(int argc, char* args[]) {
|
|||||||
GLenum error = glGetError();
|
GLenum error = glGetError();
|
||||||
if (error != GL_NO_ERROR)
|
if (error != GL_NO_ERROR)
|
||||||
{
|
{
|
||||||
printf("OpenGL Error: %d",error);
|
std::cout << "OpenGL Error: " << error << std::endl;
|
||||||
}
|
}
|
||||||
GLenum glewinit = glewInit();
|
GLenum glewinit = glewInit();
|
||||||
if (glewinit != GLEW_OK) {
|
if (glewinit != GLEW_OK) {
|
||||||
printf("Glew not okay! %d",glewinit);
|
std::cout << "Glew not okay! " << glewinit;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* SDL */
|
/* SDL */
|
||||||
if (InitLoaders() < 0) {
|
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
|
||||||
printf("SDL Error");
|
printf("SDL Error");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -84,64 +268,31 @@ int main(int argc, char* args[]) {
|
|||||||
glBindBuffer(GL_ARRAY_BUFFER, colorbuffer);
|
glBindBuffer(GL_ARRAY_BUFFER, colorbuffer);
|
||||||
glBufferData(GL_ARRAY_BUFFER, sizeof(g_uv_buffer_data), g_uv_buffer_data, GL_STATIC_DRAW);
|
glBufferData(GL_ARRAY_BUFFER, sizeof(g_uv_buffer_data), g_uv_buffer_data, GL_STATIC_DRAW);
|
||||||
|
|
||||||
// The framebuffer, which regroups 0, 1, or more textures, and 0 or 1 depth buffer.
|
|
||||||
GLuint FramebufferName;
|
|
||||||
glGenFramebuffers(1, &FramebufferName);
|
|
||||||
glBindFramebuffer(GL_FRAMEBUFFER, FramebufferName);
|
|
||||||
|
|
||||||
|
|
||||||
|
tex1 = LoadTexture("../img/tests/flieger.jpg",&textw,&texth);
|
||||||
|
printf("Tex1: %d", tex1);
|
||||||
texBG = LoadTexture("../img/backgrounds/sky.jpg",&textw2,&texth2);
|
tex2 = LoadTexture("../img/tests/flieger2.jpg",&textw2,&texth2);
|
||||||
texFG = LoadTexture("../img/tests/flieger.jpg",&textw,&texth);
|
printf("Tex2: %d", tex2);
|
||||||
printf("Tex1: %d\n", texFG);
|
|
||||||
glfwSetWindowSize(window, textw, texth);
|
glfwSetWindowSize(window, textw, texth);
|
||||||
glViewport(0, 0, textw, texth);
|
glViewport(0, 0, textw, texth);
|
||||||
glfwSetWindowSizeLimits(window, textw, texth, textw, texth);
|
glfwSetWindowSizeLimits(window, textw, texth, textw, texth);
|
||||||
|
|
||||||
// The texture we're going to render to
|
|
||||||
GLuint renderedTexture;
|
|
||||||
glGenTextures(1, &renderedTexture);
|
|
||||||
glBindTexture(GL_TEXTURE_2D, renderedTexture);
|
|
||||||
|
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGB, textw, texth, 0,GL_RGB, GL_UNSIGNED_BYTE, 0);
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
|
||||||
|
|
||||||
// Set "renderedTexture" as our colour attachement #2
|
|
||||||
glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT2, renderedTexture, 0);
|
|
||||||
// Set the list of draw buffers.
|
|
||||||
GLenum DrawBuffers[1] = {GL_COLOR_ATTACHMENT2};
|
|
||||||
glDrawBuffers(1, DrawBuffers); // "1" is the size of DrawBuffers
|
|
||||||
|
|
||||||
// Always check that our framebuffer is ok
|
|
||||||
if(glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
|
|
||||||
GLuint programID = LoadShaders("trimap.vertexshader", "trimap.fragmentshader");
|
GLuint programID = LoadShaders("trimap.vertexshader", "trimap.fragmentshader");
|
||||||
GLuint programRefineID = LoadShaders("refinement.vertexshader", "refinement.fragmentshader");
|
|
||||||
GLint textureLoc1 = glGetUniformLocation(programID, "myTextureSampler");
|
GLint textureLoc1 = glGetUniformLocation(programID, "myTextureSampler");
|
||||||
|
GLint textureLoc2 = glGetUniformLocation(programID, "myTextureSampler2");
|
||||||
GLint widthLoc = glGetUniformLocation(programID, "pixWidth");
|
GLint widthLoc = glGetUniformLocation(programID, "pixWidth");
|
||||||
GLint heigthLoc = glGetUniformLocation(programID, "pixHeight");
|
GLint heigthLoc = glGetUniformLocation(programID, "pixHeight");
|
||||||
|
|
||||||
|
|
||||||
GLint textureLocTri = glGetUniformLocation(programRefineID, "trimap");
|
|
||||||
GLint textureLocFore = glGetUniformLocation(programRefineID, "foreground");
|
|
||||||
GLint textureLocBack = glGetUniformLocation(programRefineID, "background");
|
|
||||||
|
|
||||||
glActiveTexture(GL_TEXTURE0);
|
glActiveTexture(GL_TEXTURE0);
|
||||||
glBindTexture(GL_TEXTURE_2D, texFG);
|
glBindTexture(GL_TEXTURE_2D, tex1);
|
||||||
glActiveTexture(GL_TEXTURE1);
|
glActiveTexture(GL_TEXTURE1);
|
||||||
glBindTexture(GL_TEXTURE_2D, texBG);
|
glBindTexture(GL_TEXTURE_2D, tex2);
|
||||||
glActiveTexture(GL_TEXTURE2);
|
|
||||||
glBindTexture(GL_TEXTURE_2D, renderedTexture);
|
|
||||||
|
|
||||||
|
|
||||||
printf("Shader program ID: %d\n", programID);
|
printf("Shader program ID: %d\n", programID);
|
||||||
printf("textureLoc1: %d\n", textureLoc1);
|
printf("textureLoc1: %d\n", textureLoc1);
|
||||||
printf("textureLocTri: %d\n", textureLocTri);
|
printf("textureLoc2: %d\n", textureLoc2);
|
||||||
//printf("textureLocFore: %d\n", textureLocFore);
|
|
||||||
printf("widthLoc: %d\n", widthLoc);
|
printf("widthLoc: %d\n", widthLoc);
|
||||||
printf("heigthLoc: %d\n", heigthLoc);
|
printf("heigthLoc: %d\n", heigthLoc);
|
||||||
printf("Width: %f\n", 1.0f/textw);
|
printf("Width: %f\n", 1.0f/textw);
|
||||||
@@ -153,57 +304,13 @@ int main(int argc, char* args[]) {
|
|||||||
/* Loop until the user closes the window */
|
/* Loop until the user closes the window */
|
||||||
while (!glfwWindowShouldClose(window)) {
|
while (!glfwWindowShouldClose(window)) {
|
||||||
/* Render here */
|
/* Render here */
|
||||||
// Render to our framebuffer
|
|
||||||
glBindFramebuffer(GL_FRAMEBUFFER, FramebufferName);
|
|
||||||
//glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
|
||||||
//glViewport(0,0,textw,texth); // Render on the whole framebuffer, complete from the lower left corner to the upper right
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
|
||||||
glUseProgram(programID);
|
glUseProgram(programID);
|
||||||
glUniform1f(widthLoc, 1.0f/textw);
|
glUniform1f(widthLoc, 1.0f/textw);
|
||||||
glUniform1f(heigthLoc, 1.0f/texth);
|
glUniform1f(heigthLoc, 1.0f/texth);
|
||||||
glUniform1i(textureLoc1, 0);
|
glUniform1i(textureLoc1, 0);
|
||||||
|
glUniform1i(textureLoc2, 1);
|
||||||
// 1rst attribute buffer : vertices
|
|
||||||
glEnableVertexAttribArray(0);
|
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
|
|
||||||
glVertexAttribPointer(
|
|
||||||
0, // attribute 0. No particular reason for 0, but must match the layout in the shader.
|
|
||||||
3, // size
|
|
||||||
GL_FLOAT, // type
|
|
||||||
GL_FALSE, // normalized?
|
|
||||||
0, // stride
|
|
||||||
(void*)0 // array buffer offset
|
|
||||||
);
|
|
||||||
// 2nd attribute buffer : colors
|
|
||||||
glEnableVertexAttribArray(1);
|
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, colorbuffer);
|
|
||||||
glVertexAttribPointer(
|
|
||||||
1, // attribute. No particular reason for 1, but must match the layout in the shader.
|
|
||||||
2, // size
|
|
||||||
GL_FLOAT, // type
|
|
||||||
GL_FALSE, // normalized?
|
|
||||||
0, // stride
|
|
||||||
(void*)0 // array buffer offset
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
// Draw the triangle !
|
|
||||||
glDrawArrays(GL_TRIANGLES, 0, 2*3); // 2*3 indices starting at 0 -> 2 triangles -> 1 square
|
|
||||||
glDisableVertexAttribArray(0);
|
|
||||||
|
|
||||||
|
|
||||||
// Render to the screen
|
|
||||||
glUseProgram(0);
|
|
||||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
|
||||||
glViewport(0,0,textw, texth); // Render on the whole framebuffer, complete from the lower left corner to the upper right
|
|
||||||
|
|
||||||
|
|
||||||
glUseProgram(programRefineID);
|
|
||||||
glUniform1i(textureLocTri, 2);
|
|
||||||
glUniform1i(textureLocBack, 1);
|
|
||||||
glUniform1i(textureLocFore, 0);
|
|
||||||
|
|
||||||
|
|
||||||
// 1rst attribute buffer : vertices
|
// 1rst attribute buffer : vertices
|
||||||
glEnableVertexAttribArray(0);
|
glEnableVertexAttribArray(0);
|
||||||
|
|||||||
@@ -13,7 +13,6 @@
|
|||||||
<Option compiler="gcc" />
|
<Option compiler="gcc" />
|
||||||
<Compiler>
|
<Compiler>
|
||||||
<Add option="-g" />
|
<Add option="-g" />
|
||||||
<Add directory="include" />
|
|
||||||
</Compiler>
|
</Compiler>
|
||||||
</Target>
|
</Target>
|
||||||
<Target title="Release">
|
<Target title="Release">
|
||||||
@@ -23,7 +22,6 @@
|
|||||||
<Option compiler="gcc" />
|
<Option compiler="gcc" />
|
||||||
<Compiler>
|
<Compiler>
|
||||||
<Add option="-O2" />
|
<Add option="-O2" />
|
||||||
<Add directory="include" />
|
|
||||||
</Compiler>
|
</Compiler>
|
||||||
<Linker>
|
<Linker>
|
||||||
<Add option="-s" />
|
<Add option="-s" />
|
||||||
@@ -46,11 +44,7 @@
|
|||||||
<Add library="SDL2_image" />
|
<Add library="SDL2_image" />
|
||||||
<Add directory="lib" />
|
<Add directory="lib" />
|
||||||
</Linker>
|
</Linker>
|
||||||
<Unit filename="include/loaders.h" />
|
|
||||||
<Unit filename="main.cpp" />
|
<Unit filename="main.cpp" />
|
||||||
<Unit filename="refinement.fragmentshader" />
|
|
||||||
<Unit filename="refinement.vertexshader" />
|
|
||||||
<Unit filename="src/loaders.cpp" />
|
|
||||||
<Unit filename="trimap.fragmentshader" />
|
<Unit filename="trimap.fragmentshader" />
|
||||||
<Unit filename="trimap.vertexshader" />
|
<Unit filename="trimap.vertexshader" />
|
||||||
<Extensions>
|
<Extensions>
|
||||||
|
|||||||
@@ -2,13 +2,16 @@
|
|||||||
1385320478 source:d:\owncloud\documents\programmierung\cpp\opengl-test-two\main.cpp
|
1385320478 source:d:\owncloud\documents\programmierung\cpp\opengl-test-two\main.cpp
|
||||||
<iostream>
|
<iostream>
|
||||||
|
|
||||||
1473703631 source:d:\owncloud\documents\programmierung\cpp\imanox-chroma-matting\opengl-test-two\main.cpp
|
1473145022 source:d:\owncloud\documents\programmierung\cpp\imanox-chroma-matting\opengl-test-two\main.cpp
|
||||||
<GL/glew.h>
|
<GL/glew.h>
|
||||||
<GLFW/glfw3.h>
|
<GLFW/glfw3.h>
|
||||||
<SDL2/SDL.h>
|
<SDL2/SDL.h>
|
||||||
|
<SDL2/SDL_image.h>
|
||||||
|
<stdio.h>
|
||||||
|
<iostream>
|
||||||
<fstream>
|
<fstream>
|
||||||
|
<vector>
|
||||||
<stdexcept>
|
<stdexcept>
|
||||||
"loaders.h"
|
|
||||||
|
|
||||||
1473015242 d:\owncloud\documents\programmierung\cpp\imanox-chroma-matting\opengl-test-two\include\glfw\glfw3.h
|
1473015242 d:\owncloud\documents\programmierung\cpp\imanox-chroma-matting\opengl-test-two\include\glfw\glfw3.h
|
||||||
<stddef.h>
|
<stddef.h>
|
||||||
@@ -365,387 +368,3 @@
|
|||||||
<OpenGL/glu.h>
|
<OpenGL/glu.h>
|
||||||
<GL/glu.h>
|
<GL/glu.h>
|
||||||
|
|
||||||
1473412967 source:d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\main.cpp
|
|
||||||
<GL/glew.h>
|
|
||||||
<GLFW/glfw3.h>
|
|
||||||
<iostream>
|
|
||||||
<fstream>
|
|
||||||
<vector>
|
|
||||||
<stdexcept>
|
|
||||||
"loaders.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\gl\glew.h
|
|
||||||
<stddef.h>
|
|
||||||
<inttypes.h>
|
|
||||||
<stdint.h>
|
|
||||||
<inttypes.h>
|
|
||||||
<Availability.h>
|
|
||||||
<OpenGL/glu.h>
|
|
||||||
<GL/glu.h>
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\glfw\glfw3.h
|
|
||||||
<stddef.h>
|
|
||||||
<stdint.h>
|
|
||||||
<OpenGL/gl3.h>
|
|
||||||
<OpenGL/gl3ext.h>
|
|
||||||
<OpenGL/gl.h>
|
|
||||||
<OpenGL/glu.h>
|
|
||||||
<GL/glcorearb.h>
|
|
||||||
<GLES/gl.h>
|
|
||||||
<GLES/glext.h>
|
|
||||||
<GLES2/gl2.h>
|
|
||||||
<GLES2/gl2ext.h>
|
|
||||||
<GLES3/gl3.h>
|
|
||||||
<GLES2/gl2ext.h>
|
|
||||||
<GLES3/gl31.h>
|
|
||||||
<GLES2/gl2ext.h>
|
|
||||||
<vulkan/vulkan.h>
|
|
||||||
<GL/gl.h>
|
|
||||||
<GL/glext.h>
|
|
||||||
<GL/glu.h>
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl.h
|
|
||||||
"SDL_main.h"
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"SDL_assert.h"
|
|
||||||
"SDL_atomic.h"
|
|
||||||
"SDL_audio.h"
|
|
||||||
"SDL_clipboard.h"
|
|
||||||
"SDL_cpuinfo.h"
|
|
||||||
"SDL_endian.h"
|
|
||||||
"SDL_error.h"
|
|
||||||
"SDL_events.h"
|
|
||||||
"SDL_filesystem.h"
|
|
||||||
"SDL_joystick.h"
|
|
||||||
"SDL_gamecontroller.h"
|
|
||||||
"SDL_haptic.h"
|
|
||||||
"SDL_hints.h"
|
|
||||||
"SDL_loadso.h"
|
|
||||||
"SDL_log.h"
|
|
||||||
"SDL_messagebox.h"
|
|
||||||
"SDL_mutex.h"
|
|
||||||
"SDL_power.h"
|
|
||||||
"SDL_render.h"
|
|
||||||
"SDL_rwops.h"
|
|
||||||
"SDL_system.h"
|
|
||||||
"SDL_thread.h"
|
|
||||||
"SDL_timer.h"
|
|
||||||
"SDL_version.h"
|
|
||||||
"SDL_video.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_main.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_stdinc.h
|
|
||||||
"SDL_config.h"
|
|
||||||
<sys/types.h>
|
|
||||||
<stdio.h>
|
|
||||||
<stdlib.h>
|
|
||||||
<stddef.h>
|
|
||||||
<stdarg.h>
|
|
||||||
<stdlib.h>
|
|
||||||
<malloc.h>
|
|
||||||
<stddef.h>
|
|
||||||
<stdarg.h>
|
|
||||||
<memory.h>
|
|
||||||
<string.h>
|
|
||||||
<strings.h>
|
|
||||||
<inttypes.h>
|
|
||||||
<stdint.h>
|
|
||||||
<ctype.h>
|
|
||||||
<math.h>
|
|
||||||
<float.h>
|
|
||||||
<iconv.h>
|
|
||||||
<sal.h>
|
|
||||||
"begin_code.h"
|
|
||||||
<alloca.h>
|
|
||||||
<malloc.h>
|
|
||||||
<malloc.h>
|
|
||||||
<malloc.h>
|
|
||||||
<stdlib.h>
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_config.h
|
|
||||||
"SDL_platform.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_platform.h
|
|
||||||
"AvailabilityMacros.h"
|
|
||||||
"TargetConditionals.h"
|
|
||||||
<winapifamily.h>
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\begin_code.h
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\close_code.h
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_assert.h
|
|
||||||
"SDL_config.h"
|
|
||||||
"begin_code.h"
|
|
||||||
<signal.h>
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_atomic.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"SDL_platform.h"
|
|
||||||
"begin_code.h"
|
|
||||||
<mbarrier.h>
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_audio.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"SDL_error.h"
|
|
||||||
"SDL_endian.h"
|
|
||||||
"SDL_mutex.h"
|
|
||||||
"SDL_thread.h"
|
|
||||||
"SDL_rwops.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_error.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_endian.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
<endian.h>
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_mutex.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"SDL_error.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_thread.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"SDL_error.h"
|
|
||||||
"SDL_atomic.h"
|
|
||||||
"SDL_mutex.h"
|
|
||||||
"begin_code.h"
|
|
||||||
<process.h>
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_rwops.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"SDL_error.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_clipboard.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_cpuinfo.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
<intrin.h>
|
|
||||||
<intrin.h>
|
|
||||||
<altivec.h>
|
|
||||||
<mmintrin.h>
|
|
||||||
<mm3dnow.h>
|
|
||||||
<xmmintrin.h>
|
|
||||||
<emmintrin.h>
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_events.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"SDL_error.h"
|
|
||||||
"SDL_video.h"
|
|
||||||
"SDL_keyboard.h"
|
|
||||||
"SDL_mouse.h"
|
|
||||||
"SDL_joystick.h"
|
|
||||||
"SDL_gamecontroller.h"
|
|
||||||
"SDL_quit.h"
|
|
||||||
"SDL_gesture.h"
|
|
||||||
"SDL_touch.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_video.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"SDL_pixels.h"
|
|
||||||
"SDL_rect.h"
|
|
||||||
"SDL_surface.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_pixels.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_rect.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"SDL_error.h"
|
|
||||||
"SDL_pixels.h"
|
|
||||||
"SDL_rwops.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_surface.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"SDL_pixels.h"
|
|
||||||
"SDL_rect.h"
|
|
||||||
"SDL_blendmode.h"
|
|
||||||
"SDL_rwops.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_blendmode.h
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_keyboard.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"SDL_error.h"
|
|
||||||
"SDL_keycode.h"
|
|
||||||
"SDL_video.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_keycode.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"SDL_scancode.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_scancode.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_mouse.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"SDL_error.h"
|
|
||||||
"SDL_video.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_joystick.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"SDL_error.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_gamecontroller.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"SDL_error.h"
|
|
||||||
"SDL_rwops.h"
|
|
||||||
"SDL_joystick.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_quit.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"SDL_error.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_gesture.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"SDL_error.h"
|
|
||||||
"SDL_video.h"
|
|
||||||
"SDL_touch.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_touch.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"SDL_error.h"
|
|
||||||
"SDL_video.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_filesystem.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_haptic.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"SDL_error.h"
|
|
||||||
"SDL_joystick.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_hints.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_loadso.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"SDL_error.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_log.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_messagebox.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"SDL_video.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_power.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_render.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"SDL_rect.h"
|
|
||||||
"SDL_video.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_system.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"SDL_keyboard.h"
|
|
||||||
"SDL_render.h"
|
|
||||||
"SDL_video.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_timer.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"SDL_error.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_version.h
|
|
||||||
"SDL_stdinc.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473141855 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\sdl2\sdl_image.h
|
|
||||||
"SDL.h"
|
|
||||||
"SDL_version.h"
|
|
||||||
"begin_code.h"
|
|
||||||
"close_code.h"
|
|
||||||
|
|
||||||
1473412852 d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\include\loaders.h
|
|
||||||
<GL/glew.h>
|
|
||||||
|
|
||||||
1473412967 source:d:\profile\ksy\eigene dateien\git\imanox-chroma-matting\opengl-test-two\src\loaders.cpp
|
|
||||||
<SDL2/SDL.h>
|
|
||||||
<SDL2/SDL_image.h>
|
|
||||||
<fstream>
|
|
||||||
<vector>
|
|
||||||
"loaders.h"
|
|
||||||
|
|
||||||
1473669189 source:d:\owncloud\documents\programmierung\cpp\imanox-chroma-matting\opengl-test-two\src\loaders.cpp
|
|
||||||
<SDL2/SDL.h>
|
|
||||||
<SDL2/SDL_image.h>
|
|
||||||
<fstream>
|
|
||||||
<vector>
|
|
||||||
"loaders.h"
|
|
||||||
|
|
||||||
1473669189 d:\owncloud\documents\programmierung\cpp\imanox-chroma-matting\opengl-test-two\include\loaders.h
|
|
||||||
<GL/glew.h>
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,55 +0,0 @@
|
|||||||
#version 330 core
|
|
||||||
|
|
||||||
// Interpolated values from the vertex shaders
|
|
||||||
in vec2 UV;
|
|
||||||
|
|
||||||
// Ouput data
|
|
||||||
out vec3 color;
|
|
||||||
|
|
||||||
// Values that stay constant for the whole mesh.
|
|
||||||
uniform sampler2D trimap;
|
|
||||||
uniform sampler2D foreground;
|
|
||||||
uniform sampler2D background;
|
|
||||||
|
|
||||||
|
|
||||||
int IS_BACKGROUND = 0;
|
|
||||||
int IS_UNDEFINED = 1;
|
|
||||||
int IS_FOREGROUND = 2;
|
|
||||||
int UNSET = -1;
|
|
||||||
|
|
||||||
vec3 getTriColor(vec2 uvCoord) {
|
|
||||||
return texture(trimap, uvCoord).rgb;
|
|
||||||
}
|
|
||||||
|
|
||||||
vec3 getForeColor(vec2 uvCoord) {
|
|
||||||
return texture(foreground, uvCoord).rgb;
|
|
||||||
}
|
|
||||||
|
|
||||||
vec3 getBackColor(vec2 uvCoord) {
|
|
||||||
return texture(background, uvCoord).rgb;
|
|
||||||
}
|
|
||||||
|
|
||||||
int getState(vec3 c) {
|
|
||||||
if (all(lessThanEqual(c, vec3(0.2f)))) {
|
|
||||||
return IS_BACKGROUND;
|
|
||||||
} else if (all(greaterThanEqual(c, vec3(0.8f)))) {
|
|
||||||
return IS_FOREGROUND;
|
|
||||||
} else {
|
|
||||||
return IS_UNDEFINED;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void main(){
|
|
||||||
color = getTriColor(UV);
|
|
||||||
int status = getState(color);
|
|
||||||
|
|
||||||
|
|
||||||
if (status==IS_FOREGROUND) {
|
|
||||||
color = getForeColor(UV).rgb;
|
|
||||||
} else if (status==IS_BACKGROUND) {
|
|
||||||
color = getBackColor(UV).rgb;
|
|
||||||
} else {
|
|
||||||
// render undefined area
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
#version 330 core
|
|
||||||
|
|
||||||
// Input vertex data, different for all executions of this shader.
|
|
||||||
layout(location = 0) in vec3 vertexPosition_modelspace;
|
|
||||||
layout(location = 1) in vec2 vertexUV;
|
|
||||||
|
|
||||||
// Output data ; will be interpolated for each fragment.
|
|
||||||
out vec2 UV;
|
|
||||||
|
|
||||||
void main(){
|
|
||||||
// Output position of the vertex, in clip space : MVP * position
|
|
||||||
gl_Position = vec4(vertexPosition_modelspace, 1);
|
|
||||||
|
|
||||||
// UV of the vertex. No special space for this one.
|
|
||||||
UV = vertexUV;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,146 +0,0 @@
|
|||||||
#include <SDL2/SDL.h>
|
|
||||||
#include <SDL2/SDL_image.h>
|
|
||||||
#include <fstream>
|
|
||||||
#include <vector>
|
|
||||||
#include "loaders.h"
|
|
||||||
|
|
||||||
int InitLoaders(){
|
|
||||||
return SDL_Init(SDL_INIT_VIDEO);
|
|
||||||
}
|
|
||||||
|
|
||||||
GLuint LoadTexture(char *filename,int *textw,int *texth) {
|
|
||||||
SDL_Surface *surface;
|
|
||||||
GLuint textureid;
|
|
||||||
int mode;
|
|
||||||
surface = IMG_Load(filename);
|
|
||||||
// Or if you don't use SDL_image you can use SDL_LoadBMP here instead:
|
|
||||||
// surface = SDL_LoadBMP(filename);
|
|
||||||
|
|
||||||
// could not load filename
|
|
||||||
if (!surface) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// work out what format to tell glTexImage2D to use...
|
|
||||||
if (surface->format->BytesPerPixel == 3) { // RGB 24bit
|
|
||||||
mode = GL_RGB;
|
|
||||||
|
|
||||||
} else if (surface->format->BytesPerPixel == 4) { // RGBA 32bit
|
|
||||||
mode = GL_RGBA;
|
|
||||||
} else {
|
|
||||||
SDL_FreeSurface(surface);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
*textw=surface->w;
|
|
||||||
*texth=surface->h;
|
|
||||||
// create one texture name
|
|
||||||
glGenTextures(1, &textureid);
|
|
||||||
// tell opengl to use the generated texture name
|
|
||||||
glBindTexture(GL_TEXTURE_2D, textureid);
|
|
||||||
// this reads from the sdl surface and puts it into an opengl texture
|
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, mode, surface->w, surface->h, 0, mode, GL_UNSIGNED_BYTE, surface->pixels);
|
|
||||||
// these affect how this texture is drawn later on...glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
|
||||||
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE);
|
|
||||||
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE);
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
|
||||||
// clean up
|
|
||||||
SDL_FreeSurface(surface);
|
|
||||||
return textureid;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
GLuint LoadShaders(const char * vertex_file_path,const char * fragment_file_path){
|
|
||||||
|
|
||||||
// Create the shaders
|
|
||||||
GLuint VertexShaderID = glCreateShader(GL_VERTEX_SHADER);
|
|
||||||
GLuint FragmentShaderID = glCreateShader(GL_FRAGMENT_SHADER);
|
|
||||||
|
|
||||||
// Read the Vertex Shader code from the file
|
|
||||||
std::string VertexShaderCode;
|
|
||||||
std::ifstream VertexShaderStream(vertex_file_path, std::ios::in);
|
|
||||||
if(VertexShaderStream.is_open()){
|
|
||||||
std::string Line = "";
|
|
||||||
while(getline(VertexShaderStream, Line))
|
|
||||||
VertexShaderCode += "\n" + Line;
|
|
||||||
VertexShaderStream.close();
|
|
||||||
}else{
|
|
||||||
printf("Impossible to open %s. Are you in the right directory ? Don't forget to read the FAQ !\n", vertex_file_path);
|
|
||||||
getchar();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Read the Fragment Shader code from the file
|
|
||||||
std::string FragmentShaderCode;
|
|
||||||
std::ifstream FragmentShaderStream(fragment_file_path, std::ios::in);
|
|
||||||
if(FragmentShaderStream.is_open()){
|
|
||||||
std::string Line = "";
|
|
||||||
while(getline(FragmentShaderStream, Line))
|
|
||||||
FragmentShaderCode += "\n" + Line;
|
|
||||||
FragmentShaderStream.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
GLint Result = GL_FALSE;
|
|
||||||
int InfoLogLength;
|
|
||||||
|
|
||||||
|
|
||||||
// Compile Vertex Shader
|
|
||||||
printf("Compiling shader : %s\n", vertex_file_path);
|
|
||||||
char const * VertexSourcePointer = VertexShaderCode.c_str();
|
|
||||||
glShaderSource(VertexShaderID, 1, &VertexSourcePointer , NULL);
|
|
||||||
glCompileShader(VertexShaderID);
|
|
||||||
|
|
||||||
// Check Vertex Shader
|
|
||||||
glGetShaderiv(VertexShaderID, GL_COMPILE_STATUS, &Result);
|
|
||||||
glGetShaderiv(VertexShaderID, GL_INFO_LOG_LENGTH, &InfoLogLength);
|
|
||||||
if ( InfoLogLength > 0 ){
|
|
||||||
std::vector<char> VertexShaderErrorMessage(InfoLogLength+1);
|
|
||||||
glGetShaderInfoLog(VertexShaderID, InfoLogLength, NULL, &VertexShaderErrorMessage[0]);
|
|
||||||
printf("%s\n", &VertexShaderErrorMessage[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Compile Fragment Shader
|
|
||||||
printf("Compiling shader : %s\n", fragment_file_path);
|
|
||||||
char const * FragmentSourcePointer = FragmentShaderCode.c_str();
|
|
||||||
glShaderSource(FragmentShaderID, 1, &FragmentSourcePointer , NULL);
|
|
||||||
glCompileShader(FragmentShaderID);
|
|
||||||
|
|
||||||
// Check Fragment Shader
|
|
||||||
glGetShaderiv(FragmentShaderID, GL_COMPILE_STATUS, &Result);
|
|
||||||
glGetShaderiv(FragmentShaderID, GL_INFO_LOG_LENGTH, &InfoLogLength);
|
|
||||||
if ( InfoLogLength > 0 ){
|
|
||||||
std::vector<char> FragmentShaderErrorMessage(InfoLogLength+1);
|
|
||||||
glGetShaderInfoLog(FragmentShaderID, InfoLogLength, NULL, &FragmentShaderErrorMessage[0]);
|
|
||||||
printf("%s\n", &FragmentShaderErrorMessage[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Link the program
|
|
||||||
printf("Linking program\n");
|
|
||||||
GLuint ProgramID = glCreateProgram();
|
|
||||||
glAttachShader(ProgramID, VertexShaderID);
|
|
||||||
glAttachShader(ProgramID, FragmentShaderID);
|
|
||||||
glLinkProgram(ProgramID);
|
|
||||||
|
|
||||||
// Check the program
|
|
||||||
glGetProgramiv(ProgramID, GL_LINK_STATUS, &Result);
|
|
||||||
glGetProgramiv(ProgramID, GL_INFO_LOG_LENGTH, &InfoLogLength);
|
|
||||||
if ( InfoLogLength > 0 ){
|
|
||||||
std::vector<char> ProgramErrorMessage(InfoLogLength+1);
|
|
||||||
glGetProgramInfoLog(ProgramID, InfoLogLength, NULL, &ProgramErrorMessage[0]);
|
|
||||||
printf("%s\n", &ProgramErrorMessage[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
glDetachShader(ProgramID, VertexShaderID);
|
|
||||||
glDetachShader(ProgramID, FragmentShaderID);
|
|
||||||
|
|
||||||
glDeleteShader(VertexShaderID);
|
|
||||||
glDeleteShader(FragmentShaderID);
|
|
||||||
|
|
||||||
return ProgramID;
|
|
||||||
}
|
|
||||||
@@ -4,11 +4,12 @@
|
|||||||
in vec2 UV;
|
in vec2 UV;
|
||||||
|
|
||||||
// Ouput data
|
// Ouput data
|
||||||
layout(location = 0) out vec3 color;
|
|
||||||
//out vec3 color;
|
//out vec3 color;
|
||||||
|
layout(location = 0) out vec3 color;
|
||||||
|
|
||||||
// Values that stay constant for the whole mesh.
|
// Values that stay constant for the whole mesh.
|
||||||
uniform sampler2D myTextureSampler;
|
uniform sampler2D myTextureSampler;
|
||||||
|
uniform sampler2D myTextureSampler2;
|
||||||
|
|
||||||
// Relative width/height of a pixel
|
// Relative width/height of a pixel
|
||||||
uniform float pixWidth;
|
uniform float pixWidth;
|
||||||
@@ -21,13 +22,9 @@ int IS_UNDEFINED = 1;
|
|||||||
int IS_FOREGROUND = 2;
|
int IS_FOREGROUND = 2;
|
||||||
int UNSET = -1;
|
int UNSET = -1;
|
||||||
|
|
||||||
vec3 greenValue = vec3(0.0f, 1.0f, 0.0f);
|
|
||||||
vec3 difference = vec3(40.0f/255.0f);
|
|
||||||
int radius = 10;
|
|
||||||
|
|
||||||
|
|
||||||
vec3 getColor(vec2 uvCoord) {
|
vec3 getColor(vec2 uvCoord) {
|
||||||
return texture(myTextureSampler, uvCoord).rgb;
|
return texture(myTextureSampler2, uvCoord).rgb;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isBackground(vec3 c) {
|
bool isBackground(vec3 c) {
|
||||||
@@ -35,8 +32,8 @@ bool isBackground(vec3 c) {
|
|||||||
if (all( lessThanEqual(c, vec3(51.0f/255.0f, 208.0f/255.0f, 13.0f/255.0f))) &&
|
if (all( lessThanEqual(c, vec3(51.0f/255.0f, 208.0f/255.0f, 13.0f/255.0f))) &&
|
||||||
all(greaterThanEqual(c, vec3(47.0f/255.0f, 204.0f/255.0f, 9.0f/255.0f)))*/
|
all(greaterThanEqual(c, vec3(47.0f/255.0f, 204.0f/255.0f, 9.0f/255.0f)))*/
|
||||||
// 0, 255, 0
|
// 0, 255, 0
|
||||||
if (all( lessThanEqual(c, greenValue+difference)) &&
|
if (all( lessThanEqual(c, vec3(2.0f/255.0f, 255.0f/255.0f, 2.0f/255.0f))) &&
|
||||||
all(greaterThanEqual(c, greenValue-difference))
|
all(greaterThanEqual(c, vec3(0.0f/255.0f, 253.0f/255.0f, 0.0f/255.0f)))
|
||||||
) {
|
) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
@@ -47,9 +44,9 @@ bool isBackground(vec3 c) {
|
|||||||
void main(){
|
void main(){
|
||||||
int status = UNSET;
|
int status = UNSET;
|
||||||
|
|
||||||
for(int w=-radius;w<=radius;w++){
|
for(int w=-5;w<=5;w++){
|
||||||
for(int h=-radius;h<=radius;h++){
|
for(int h=-5;h<=5;h++){
|
||||||
if (w+h==-radius*2) { // first pixel
|
if (w+h==-10) { // first pixel
|
||||||
if (isBackground(getColor(UV+vec2(pixWidth*w, pixHeight*h)))) {
|
if (isBackground(getColor(UV+vec2(pixWidth*w, pixHeight*h)))) {
|
||||||
status = IS_BACKGROUND;
|
status = IS_BACKGROUND;
|
||||||
} else {
|
} else {
|
||||||
@@ -74,10 +71,10 @@ void main(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (status == IS_BACKGROUND) {
|
if (status == IS_BACKGROUND) {
|
||||||
color = vec3(0.0f);
|
color = vec3(1.0f, 0.0f, 0.0f);
|
||||||
} else if (status == IS_FOREGROUND) {
|
} else if (status == IS_FOREGROUND) {
|
||||||
color = vec3(1.0f);
|
color = vec3(0.0f, 1.0f, 0.0f);
|
||||||
} else {
|
} else {
|
||||||
color = vec3(0.5f);
|
color = vec3(0.0f, 0.0f, 1.0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ out vec2 UV;
|
|||||||
|
|
||||||
void main(){
|
void main(){
|
||||||
// Output position of the vertex, in clip space : MVP * position
|
// Output position of the vertex, in clip space : MVP * position
|
||||||
gl_Position = vec4(vertexPosition_modelspace.x, -1*vertexPosition_modelspace.y, vertexPosition_modelspace.z, 1);
|
gl_Position = vec4(vertexPosition_modelspace, 1);
|
||||||
|
|
||||||
// UV of the vertex. No special space for this one.
|
// UV of the vertex. No special space for this one.
|
||||||
UV = vertexUV;
|
UV = vertexUV;
|
||||||
|
|||||||
Reference in New Issue
Block a user