3
저는 GLFW를 처음 사용하고 간단한 텍스처 매핑 프로그램을 만들었습니다. 문제는 taskmanager에서 명확하게 볼 수있는 메모리 자원이 증가하지 않는 프로그램을 실행하는 동안입니다.메모리 리소스 증가 논스톱
몇 분 동안 프로그램을 실행하면 컴퓨터의 팬 속도가 빨라지고 난방 문제가 발생합니다. 이 문제를 어떻게 해결할 수 있습니까? 여기
여기 텍스처 로딩 기능
GLuint LoadTexture(const char* TextureName)
{
GLuint Texture; //variable for texture
glGenTextures(1,&Texture); //allocate the memory for texture
glBindTexture(GL_TEXTURE_2D,Texture); //Binding the texture
if(glfwLoadTexture2D(TextureName, GLFW_BUILD_MIPMAPS_BIT)){
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
return Texture;
}else return -1;
}
에 대한 코드가
void display()
{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); //clear background screen to black
//Clear information from last draw
glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW); //Switch to the drawing perspective
glLoadIdentity(); //Reset the drawing perspective
glTranslatef(0.0f,0.0f,-35.0f); //Translate whole scene to -ve z-axis by -35 unit
GLuint text2D;
text2D = LoadTexture("cicb.tga"); //loading image for texture
glEnable(GL_TEXTURE_2D); //Enable texture
glBindTexture(GL_TEXTURE_2D,text2D);//Binding texture
glPushMatrix();
glBegin(GL_POLYGON); //Begin quadrilateral coordinates
glNormal3f(0.0f, 0.0f, 1.0f);//normal vector
glTexCoord2f(0.0f, 0.0f); //Texture co-ordinate origin or lower left corner
glVertex3f(-10.0f,-11.0f,5.0f);
glTexCoord2f(1.0f, 0.0f); //Texture co-ordinate lower right corner
glVertex3f(10.0f,-11.0f,5.0f);
glTexCoord2f(1.0f, 1.0f);//Texture co-ordinate top right corner
glVertex3f(10.0f,-1.0f,-15.0f);
glTexCoord2f(0.0f, 1.0f);//Texture co-ordinate top left corner
glVertex3f(-10.0f,-1.0f,-15.0f);
glEnd(); //End quadrilateral coordinates
glPopMatrix();
glDisable(GL_TEXTURE_2D);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D,text2D);
glPushMatrix();
glBegin(GL_POLYGON);
glNormal3f(0.0f, 0.0f, 1.0f);
glTexCoord2f(0.0f, 0.0f);//Texture co-ordinate origin or lower left corner
glVertex3f(-10.0f,-1.0f,-15.0f);
glTexCoord2f(10.0f, 0.0f); //Texture co-ordinate for repeating image ten times form
//origin to lower right corner
glVertex3f(10.0f,-1.0f,-15.0f);
glTexCoord2f(10.0f, 10.0f);//repeat texture ten times form lower to top right corner.
glVertex3f(10.0f,15.0f,-15.0f);
glTexCoord2f(0.0f, 10.0f);//repeat texture ten time form top right to top left corner.
glVertex3f(-10.0f,15.0f,-15.0f);
glEnd();
glPopMatrix();
glDisable(GL_TEXTURE_2D); //Disable the texture
glfwSwapBuffers();
}
사람이 그때 다운로드 링크를 제공 할 수있는 EXE를 실행하여 문제를보고 싶다면 그리기 기능을위한 코드입니다.
display() 함수 밖에서 LoadTexture Funtion을 호출하면 이미지가로드되지 않지만 1을 반환합니다. GLuint 전역 변수를 만들고 해당 변수에 LoadTexture 함수에 의한 값 반환을 할당하고 display() 함수에 사용했습니다 . 내가 한 실수. –
'1'은 glGenTextures에서 얻은 정확한 결과 일 수 있습니다. (즉, 모든 것이 괜찮습니다.) 오류를 나타내려면 대신 '-1'을 반환 할 수 있습니다. 디버거를 연결하고 얻은 값과 실행 경로를 확인하십시오. – Bart
죄송합니다 바트, 귀하의 답변이 맞는지 확인하십시오. Iam은 C++에서 좋았지 만 열심히 노력했지만 실패했습니다. 여기 codeblock에서 컴파일 된 것은 poject 파일입니다 https://www.dropbox.com/sh/6iurx6sgps4oloc/p5IH070ykM/TextureGLFW.rar 내 전체 코드를 다운로드하고 제발 어리석은 실수를 보시겠습니까? 나는 해냈다. 그것은 작은 프로그램입니다. –