C++ でプログラミングを始めたばかりですが、定義した構造体から配列にアクセスする際に問題が発生しています。
OpenGL を使用して、テクスチャを使用してピクセル データの配列を画面に描画しています。ピクセル データの配列は、Image 構造体に格納されます。
struct Image {
GLubyte *pixels;
int width;
int height;
int bitrate;
Image(int w, int h, GLubyte* pixels, int bitrate){
this->width = w;
this->height = h;
this->pixels = pixels;
this->bitrate = bitrate;
}
};
イメージは次のように初期化されます。
GLubyte* pix = new GLubyte[WIDTH*HEIGHT*3];
Image image(WIDTH, HEIGHT, pix, 3);
Image インスタンスを使用して初期化される Screen と呼ばれる別の構造体があります。
struct Screen{
int width, height;
Image* screen;
void setScreen(Image* screen, const int width, const int height){
this->screen = screen;
this->width = width;
this->height = height;
}
};
画面は次のように初期化されます (Image 宣言の直後)。
displayData = new Screen();
displayData->setScreen(&image, WIDTH, HEIGHT);
Width または Height 変数にアクセスすると、正しい値が取得されます。次に、画面インスタンスをこのメソッドに渡します。
void renderScreen(Screen *screen){
std::cout << "Rendering Screen" << std::endl;
for(int x = 0; x < screen->width; x++){
for(int y = 0; y < screen->height; y++){
std::cout << "rendering " << x << " " << y << std::endl;
//Gets here and crashes on x - 0 and y - 0
screen->write(0xFFFFFFFF, x, y);
}
}
std::cout << "done rendering Screen" << std::endl;
}
これは次のように呼び出されます。
render(displayData); (displayData is a Screen pointer)
ポインターは私にとってまったく新しいものであり、構造体へのポインターの受け渡しに関する規則などは知りません。