예제 #1
0
// See if there is an error and trace it
bool GetOpenGLError()
{
	//SPEEDUP return in release build
    GLenum err=glGetError();

	if (err==GL_NO_ERROR)
		return false;

    //LPCSTR ErrorStr;
	const char* ErrorStr;

    switch (err)
    {
       case GL_NO_ERROR         : break;		// NO ERROR
       case GL_INVALID_ENUM     : ErrorStr="GL_INVALID_ENUM"     ; break;
       case GL_INVALID_VALUE    : ErrorStr="GL_INVALID_VALUE"    ; break;
       case GL_INVALID_OPERATION: ErrorStr="GL_INVALID_OPERATION"; break;
       case GL_STACK_OVERFLOW   : ErrorStr="GL_STACK_OVERFLOW"   ; break;
       case GL_STACK_UNDERFLOW  : ErrorStr="GL_STACK_UNDERFLOW"  ; break;
       case GL_OUT_OF_MEMORY    : ErrorStr="GL_OUT_OF_MEMORY"    ; break;
       default                  : ErrorStr="<Unknown>";assert(0) ; break; 
    }

#ifdef SB_ANDROID
	const char* pChar = "";	 
	//const char* pChar = gluErrorString(err);	//TODOF: use glues http://code.google.com/p/glues/ 
	dbg_msg("GL error #(0x%x): %s \r\n", err, ErrorStr) ;
#else
	const char* pChar = gluErrorStringWIN(err);
	dbg_msg("GL error #(0x%x): %s \r\n", err, pChar) ;
#endif
	
	//1026 TRACE1("OGL's glGetError() returned error %s\n",(LPCSTR)Error);

return true;
	if ( err == GL_STACK_OVERFLOW )
	{
		traceGLStack();
		GetOpenGLError();		// test once more
	}

	return true;
}
예제 #2
0
			void CTextureCubeMap::UploadSubRegion(EFace const Face, void const * const Data, vec2u const & Offset, vec2u const & Size, EFormatComponents const Components, EScalarType const Type)
			{
				CheckedGLCall(glBindTexture(GL_TEXTURE_CUBE_MAP, Handle));
				CheckExistingErrors(Texture2D::SubImage);
				glTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + (int) Face, 0, Offset.X, Offset.Y, Size.X, Size.Y, FormatMatrix[(int) Components], Util::ScalarTypeMatrix[(int) Type], Data);
				if (OpenGLError())
				{
					cerr << "Error occured during glTexSubImage2D for CTextureCubeMap: " << GetOpenGLError() << endl;
					cerr << "Handle is " << Handle << endl;
					cerr << "Offset is " << Offset << endl;
					cerr << "Size is " << Size << endl;
					cerr << "Format is " << FormatStringMatrix[(int) Components] << endl;
					cerr << "Type is " << Util::ScalarTypeStringMatrix[(int) Type] << endl;
					cerr << endl;
				}
				else
				{
					if (MipMaps)
						CheckedGLCall(glGenerateMipmap(GL_TEXTURE_CUBE_MAP));
					ApplyParams();
				}
				CheckedGLCall(glBindTexture(GL_TEXTURE_CUBE_MAP, 0));
			}