OpenGl glTexImage2D de données
Je suis en train de lire des nombres décimaux à partir d'un CSV file
, qui contient un précalculées de la texture, de la stocker dans un 1 dimensions tableau, et ensuite mettre cette lire les données en 2 dimensions de la texture.
Je dois m'assurer que le code suivant n'est que, parce que j'ai des problèmes d'accès aux données et je ne peux pas comprendre où est l'erreur:
//Allocate memory
float * image = new float [width * height * 3 ];
for( int i = 0; i < height; i++)
{
for( int j = 0; j < width-1; j++)
{
fscanf( fDataFile, "%f,", &fData );
image[ 4 * i * j + 0 ] = fData;
image[ 4 * i * j + 1 ] = fData;
image[ 4 * i * j + 2 ] = fData;
}
fscanf( fDataFile, "%f", &fData );
image[ 4 * i * width-1 + 0 ] = fData;
image[ 4 * i * width-1 + 1 ] = fData;
image[ 4 * i * width-1 + 2 ] = fData;
}
Il ne devrait pas être un problème ici, mais ce qui m'inquiète, c'est la suivante:
//create the texture
glGenTextures(1, &texHandle);
glBindTexture(GL_TEXTURE_2D, texHandle);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_FLOAT, &image[0]);
Est-il acceptable de donner glTexImage2D
le pointeur de ma-tableau unidimensionnel?
la taille du tableau, c'est la largeur*hauteur*3 et la texture du format doit être de la largeur*hauteur avec 3 canaux... de sorte que la taille devrait être d'accord, je suppose?!
Encore mon programme ne fonctionne pas comme prévu et c'est une source potentielle d'erreur.
glTexParamter
? Si pas, essayez de l'appeler qu'avec GL_NEAREST
pour voir si la texture de vos cheveux. Vous pouvez affiner à partir de là.Hey! Merci pour la rapidité et en encourageant la réponse! Ineed j'en ai trouvé une erreur, lors de la lecture du fichier. avant j'avais un canal alpha, donc j'ai écrit
image[ 4 * i * width-1 + 1 ] = fData;
au lieu de image[ 3 * i * width-1 + 1 ] = fData;
et je suppose que l'erreur est à une autre ligne de code. mais je me sens plus sûr de le trouver maintenant! merci!!!!OriginalL'auteur molostil | 2013-03-05
Vous devez vous connecter pour publier un commentaire.
Hé les Gars, j'ai résolu mon foiré la texture de la lecture ... je ne sais pas ce que vous avez en moi, mais la initilization de mon tableau était de la pure nonesense. voici le code corrigé, j'ai découvert lorsque j'essaie d'écrire un essai de texture:
En outre, cela permettrait de travail est maintenant indépendant du format interne.
GL_RGB, GL_RGBA, GL_RGB32F and GL_RGBA32F
tous fonctionnent très bien sans changer la façon dont je lis ma texture.Merci à vous tous!
OriginalL'auteur molostil
Vous devriez être en utilisant un floating point format interne. Par exemple,
GL_RGB32F
. Qui devrait être le troisième paramètre.GL_RGB32F
peuvent ne pas être disponibles. De même, selon la version, bien que peu probable, il pourrait non-puissance de deux textures. Cependant, le plus probable est le choix de minificatiion filtre que l'OP ne spécifie pas.tout d'abord merci pour vos réponses utiles.la chose est
merci à vous deux pour votre grande entrée. c'est toujours très très utile, même si à l'aide du filtre de grossissement et minifictaion filtre de ne pas faire le truc maintenant, j'aurais eu des problèmes avec elle plus tard, je suppose. ^^
GL_RGB32F
n'a pas aider non plus, mais au moins, je suis plus confiant que ma texture d'entrée est très probablement sans faille maintenant, et l'erreur est ailleurs. merci, je vais répondre si je l'ai trouvé.OriginalL'auteur Nicol Bolas