変数に関して非常に奇妙な問題があります。OPENGLレンダリングループで数回呼び出した後、1つの変数はverticesSize
理由もなくその値()を変更しますが、2番目の変数(verticesSize2)は変更しません...逆に、プログラムの他の場所でループすると(forを使用)、両方とも正しい値を保持します。最初の変数にどのように名前を付けるかは関係ありません。常に値が変わるため、メモリの問題である必要がありますが、何が原因かわかりません。何か案は?
cpp。ファイル
void CosmicBody::InitShape(unsigned int uiStacks, unsigned int uiSlices, float fA, float fB, float fC)
{
float tStep = (Pi) / (float)uiSlices;
float sStep = (Pi) / (float)uiStacks;
float SlicesCount=(Pi+0.0001)/tStep;
float StackCount=(2*Pi+0.0001)/sStep;
this->verticesSize=((int) (SlicesCount+1) * (int) (StackCount+1))*2;
this->verticesSize2=((int) (SlicesCount+1) * (int) (StackCount+1))*2;
}
main.cpp
#include ....
CosmicBody one;
void renderScene(void)
{
std::cout<<one.verticesSize<<endl;
std::cout<<one.verticesSize2<<endl;
fps.calculateFPS(clock.elapsedTime);
glutSwapBuffers();
}
編集
OKこの関数関数の問題の原因となる行が見つかりましたsprintf
。プログラムが正しく実行されません。別のクラスの関数が原因でこれが発生するのはなぜですか。void FpsCalc ::calculateFPS(unsigned int currentTime){
frameCount++;
int timeInterval = currentTime - previousTime;
if(timeInterval > 1000)
{
float fps = frameCount / (timeInterval / 1000.0f);
previousTime = currentTime;
frameCount = 0;
sprintf(this->fps,"%f",fps); //this line makes mess
}
}
#ifndef FPSCALC_H
#define FPSCALC_H
class FpsCalc
{
private:
int frameCount;
float previousTime;
public:
FpsCalc();
void calculateFPS(unsigned int currentTime);
char fps[5];
~FpsCalc(){};
};
#endif