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:
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!!! :)
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!!! :)

