Adding the vertex shader has changed something. Now I am getting a blue screen. When I created my rect, I did define all 4 vertices positions, texcords, and colour blue. This still does not explain why I am not getting the texture I passed into the fragment shader but thank you, it looks like a small piece of the puzzle has been solved.
Here is the program code
#include <SFML/Graphics.hpp>
#define Window_Width 512
#define Window_Height 512
int main()
{
int maxiterations = 255;
sf::RenderWindow window(sf::VideoMode(Window_Width, Window_Height), "SFML works!");
sf::VertexArray rectangle(sf::Quads, 4);
sf::Vector2f rectSize(Window_Width,Window_Height);
sf::Vector2f center(Window_Width/2, Window_Height/2);
sf::Texture picture; //Shader colouring texture
if(!picture.loadFromFile("logoBig.png"))
{
int fuck = 5;
}
sf::Shader shader; //Fractal shader
if(!shader.loadFromFile("mandelbrot.frag", sf::Shader::Fragment)) //Load shader
{
int i = 0;
}
if(!shader.loadFromFile("vertexshade.vert", sf::Shader::Vertex)) //Load shader
{
int i = 0;
}
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
shader.setParameter("texture2", picture);
//SORT VERTICES
rectangle[0].position = sf::Vector2f(0, 0);
rectangle[1].position = sf::Vector2f(Window_Width, 0);
rectangle[2].position = sf::Vector2f(Window_Width, Window_Height);
rectangle[3].position = sf::Vector2f(0, Window_Height);
// define the color of the quad points
rectangle[0].color = sf::Color::Blue;
rectangle[1].color = sf::Color::Blue;
rectangle[2].color = sf::Color::Blue;
rectangle[3].color = sf::Color::Blue;
//texture coords
rectangle[0].texCoords = sf::Vector2f(0, 0);
rectangle[1].texCoords = sf::Vector2f(Window_Width, 0);
rectangle[2].texCoords = sf::Vector2f(Window_Width, Window_Height);
rectangle[3].texCoords = sf::Vector2f(0, Window_Height);
window.clear();
window.draw(rectangle,&shader);
window.display();
}
return 0;
}
Vertex Shader
void main()
{
// transform the vertex position
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
// transform the texture coordinates
gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
// forward the vertex color
gl_FrontColor = gl_Color;
}
Fragment Shader
uniform sampler2D texture2;
void main()
{
// lookup the pixel in the texture
vec4 pixel = texture2D(texture2, gl_TexCoord[0].xy);
// multiply it by the color
gl_FragColor = pixel;
}