ciao.
ho la seguente classe:
.h
codice:
class CShaderProgram
{
public:
CShaderProgram();
~CShaderProgram(void);
bool compileShaderFromName( const std::string & strShaderName, GLSLShader::GLSLShaderType type );
char* m_strProgramName;
private:
const char* loadShaderAsString(const char* file);
void printActiveUniforms();
void printActiveAttribs();
int m_handle;//handle del programma compilato
};
.cpp
codice:
#include "StdAfx.h"
#include "ShaderProgram.h"
#include "Resources.h"
#include <iostream>
#include <fstream>
CShaderProgram::CShaderProgram()
{
}
CShaderProgram::~CShaderProgram(void)
{
}
const char* CShaderProgram::loadShaderAsString(const char* file){
std::ifstream shader_file(file, std::ifstream::in);
std::string str((std::istreambuf_iterator<char>(shader_file)), std::istreambuf_iterator<char>());
return str.c_str(); //ATTENZIONE PROBLEMA
}
bool CShaderProgram::compileShaderFromName( const string & strShaderName, GLSLShader::GLSLShaderType type )
{
const char* strSource = loadShaderAsString("C:\\OpenResources\\Shaders\\basic.vert");
//non riportato perchè non importante
quando richiamo dall esterno :
codice:
CShaderProgram program;
program.compileShaderFromName("basic.vert", GLSLShader::VERTEX);
in:
//ATTENZIONE PROBLEMA
qui :return str.c_str(); col debug vedo che la stringa è caricata correttamente con il contenuto di
C:\\OpenResources\\Shaders\\basic.vert, ma dopo che ritorna str si svuota e il valore const char ritornato è non valido
[0] -18 'î' const char
[1] -2 'þ' const char
e cosi via per tutto il contenuto.
non riesco a capire il perchè!
grazie.