ciao.
ho la seguente classe:
.h
.cppcodice: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 };
quando richiamo dall esterno :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
in:codice:CShaderProgram program; program.compileShaderFromName("basic.vert", GLSLShader::VERTEX);
//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.

Rispondi quotando