Problemas com Shaders (??) no OpenGL C++ [RESOLVIDO]

1. Problemas com Shaders (??) no OpenGL C++ [RESOLVIDO]

Adriano Andrei Goede
adrianogoede

(usa Debian)

Enviado em 21/09/2021 - 13:19h

Boa tarde senhores(as),

Decidi me aventurar na programação OpenGL em C++ e no momento estou tentando apenas imprimir um ponto na tela pra começar. Pois bem, ao setar os Shaders para tal estou me deparando com um problema, segue o código abaixo:

#include <fstream>
#include <string>
#include <GL/gl.h>

std::string ReadFile(const char* path)
{
std::ifstream fs{path, std::ios::in};
std::string ret, line;
while (!fs.eof()) {
std::getline(fs, line);
ret.append(line + "\n");
}
return ret;
}

GLuint CreateVertexShader(const char* filePath)
{
auto code{ReadFile(filePath)};
const GLchar* constCodePtr = code.c_str();
GLuint vShader{glCreateShader(GL_VERTEX_SHADER)};
glShaderSource(vShader, 1, &constCodePtr, NULL);
glCompileShader(vShader);
return vShader;
}

GLuint CreateFragmentShader(const char* filePath)
{
auto code{ReadFile(filePath)};
const GLchar* constCodePtr = code.c_str();
GLuint fShader{glCreateShader(GL_FRAGMENT_SHADER)};
glShaderSource(fShader, 1, &constCodePtr, NULL);
glCompileShader(fShader);
return fShader;
}

GLuint ConstructShaderProgram(const char* vertexShaderPath, const char* fragmentShaderPath)
{
GLuint program{glCreateProgram()};
glAttachShader(program, CreateVertexShader(vertexShaderPath));
glAttachShader(program, CreateFragmentShader(fragmentShaderPath));
glLinkProgram(program);
return program;
}


Este código (junto com todo o resto) compila sem erros e a janela com fundo preto é aberta normalmente, porém o ponto não aparece de jeito nenhum, e como não há erros de compilação ou warnings eu acredito que o problema esteja na construção dos Shaders, mas não consigo sair do lugar, alguém saberia me ajudar?

Obs: O código dos arquivos .glsl estão nas imagens em anexo;

Caso interesse: Minha GPU é uma Intel UHD 620 (Suporta OpenGL até 4.6), estou usando Debian 11 com todas as atualizações em dia e o compilador é o g++.

Muito Obrigado!!! :)


  


2. MELHOR RESPOSTA

Samuel Leonardo
SamL

(usa XUbuntu)

Enviado em 21/09/2021 - 16:40h

Mexi muito pouco com shaders, ainda quero aprender. Mas, você verificou se o ponto na verdade está bem no cantinho? Tipo, canto mesmo, canto superior esquerdo. Tente colocar uma cor vermelho nele e recompile o programa, pode ser que apareça no canto. Ou ainda, se você tiver definido outros valores pro glOrtho, o ponto pode aparecer em outro canto que não o superior esquerdo. De todo caso, é melhor setar a posição dele bem pro meio da janela pra ver se ele aparece lá.

3. Re: Problemas com Shaders (??) no OpenGL C++ [RESOLVIDO]

Samuel Leonardo
SamL

(usa XUbuntu)

Enviado em 21/09/2021 - 16:42h

E uma coisa que reparei, tente colocar o valor das cores entre 0 e 1, pois ali o Blue tá como 50.0


4. Re: Problemas com Shaders (??) no OpenGL C++ [RESOLVIDO]

Adriano Andrei Goede
adrianogoede

(usa Debian)

Enviado em 23/09/2021 - 12:45h

Acabou que havia vários problemas em outras áreas do meu código e os Shaders estavam corretos. Mas muito obrigado mesmo assim! :)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts