私はこの質問が以前に尋ねられたが、私の問題に適切な解決策を見てdidntを知っている、私の問題は、クラス(PAGTexture)はすべて正常ですが、そのポインタは変数として別のクラスに渡され、その新しいクラス(PAGRevolutionObject)ではPAGTextureからメソッドが呼び出され、例外がスローされます。デバッグ私はそれが実際にそのメソッドに入っていることに気づいたが、 "this"ポインタはnull "0x00000000"です。 これはPAGTextureの私のcppです:ポインタこのクラスのメソッドを呼び出すときにnullになるこのクラスのメソッドを呼び出すときC++
#include "PAGTexture.h"
PAGTexture::PAGTexture()
{}
PAGTexture::~PAGTexture()
{
}
void PAGTexture::loadTexture(char * path_img, GLuint min_filter, GLuint mag_filter)
{
int imgWidth, imgHeight;
unsigned char *image;
image = SOIL_load_image(path_img,
&imgWidth,
&imgHeight,
0,
SOIL_LOAD_RGBA);
if (imgWidth == 0) {
std::cout << "Failed to load image." << std::endl;
}
GLuint id_img;
glGenTextures(1, &id_img);
glBindTexture(GL_TEXTURE_2D, id_img);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filter);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_filter);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, imgWidth, imgHeight,
0, GL_RGBA, GL_UNSIGNED_BYTE, image);
glGenerateMipmap(GL_TEXTURE_2D);
ep = id_img;
id_imgs.push_back(id_img);
SOIL_free_image_data(image);
}
void PAGTexture::applyTexture(GLuint id, int pos)
{
glActiveTexture(id);
glBindTexture(GL_TEXTURE_2D, id_imgs.at(pos));
}
それはid_imgs.at(POS)からIDを取得しようとすると、この1つがnullであるため、「applyTexture」が呼び出されたときにそれがNULLポインタに変わります。
そして、これは私が「applyTexture」と呼ばれる部分である:私はそこから「applyTexture」にアクセスすることができますので、テクスチャがNULLポインタではないことを
GLuint t = 33984;
if (id_revol.size() != 0) {
for (int i = 0; i < id_revol.size(); i++) {
shader_used->setUniform("TexSamplerColor", i);
textures->applyTexture(t + i, id_revol.at(i));
}
}
はお知らせ。
そして、これは私がデバッグ得たもののイメージである:私もそのポインタをしている私のコードのどの部分を知っているデータブレークポイントを設定しようとしました Image Debugging the process
この"tutorial"次壊れしかし、私はそのブレークポイントを設定しカント私のVSバージョン(VS2015)。
正直言って、別のクラス(私のproyectはかなり大きいです)でもメモリを上書きしているのが私の問題だと思います。でも、私は行方不明のものがあるかどうか尋ねたいと思っていました。
ところで私はデバッグモード(リリースではない)でVisual Studio 2015を使用しています。
お返事ありがとうございます。
EDIT1:
PAGTexture *texturesPack = new PAGTexture();
texturesPack->loadTexture("Textures/check.png", GL_LINEAR, GL_LINEAR);
texturesPack->loadTexture("Textures/HeadSpider.png", GL_LINEAR, GL_LINEAR);
texturesPack->loadTexture("Textures/wood.jpg", GL_LINEAR, GL_LINEAR);
objeto2->drawLowerBodySpiderAndHead(texturesPack);
FINAL EDIT::誰もが答える おかげで、私の問題は、私は、インライン関数内でそのポインタを結合して、それはあなたのように見えるということであった ここで要求されたように、私はPAGTextureを定義したところであります私はそれが重要なことができると思ういくつかのポイントを学んだことをもう一度ありがとうD
その行にブレークポイントを置き、 'textures'が実際にはnullでないことを確認します。 –
あなたはあなたの質問を明確にしませんでした。 [コードスニペットを実際の実行可能ファイルにコンパイルすることはできないので、問題を再現することはできません。](http://stackoverflow.com/help/mcve)コードスニペットには、実際にはキーワード「this」が含まれていません。まだ正確にあなたの問題がどこにあるのか把握しようとしています... – DevSolar
私はちょうどそれをチェックして、あなたは正しいですが、テクスチャはnullですが、まだ私は "applyTexture"メソッドに入ることができます、それは意味がありますか? – JLentubbi