lltexture.h
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:3k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file lltexture.h
  3.  * @brief LLTexture definition
  4.  *
  5.  * This class acts as a wrapper for OpenGL calls.
  6.  * The goal of this class is to minimize the number of api calls due to legacy rendering
  7.  * code, to define an interface for a multiple rendering API abstraction of the UI
  8.  * rendering, and to abstract out direct rendering calls in a way that is cleaner and easier to maintain.
  9.  *
  10.  * $LicenseInfo:firstyear=2001&license=viewergpl$
  11.  * 
  12.  * Copyright (c) 2001-2010, Linden Research, Inc.
  13.  * 
  14.  * Second Life Viewer Source Code
  15.  * The source code in this file ("Source Code") is provided by Linden Lab
  16.  * to you under the terms of the GNU General Public License, version 2.0
  17.  * ("GPL"), unless you have obtained a separate licensing agreement
  18.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  19.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  20.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  21.  * 
  22.  * There are special exceptions to the terms and conditions of the GPL as
  23.  * it is applied to this Source Code. View the full text of the exception
  24.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  25.  * online at
  26.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  27.  * 
  28.  * By copying, modifying or distributing this software, you acknowledge
  29.  * that you have read and understood your obligations described above,
  30.  * and agree to abide by those obligations.
  31.  * 
  32.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  33.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  34.  * COMPLETENESS OR PERFORMANCE.
  35.  * $/LicenseInfo$
  36.  */
  37. #ifndef LL_TEXTURE_H
  38. #define LL_TEXTURE_H
  39. #include "llrefcount.h"
  40. class LLImageGL ;
  41. class LLTexUnit ;
  42. class LLFontGL ;
  43. //
  44. //this is an abstract class as the parent for the class LLViewerTexture
  45. //through the following virtual functions, the class LLViewerTexture can be reached from /llrender.
  46. //
  47. class LLTexture : public LLRefCount
  48. {
  49. friend class LLTexUnit ;
  50. friend class LLFontGL ;
  51. protected:
  52. virtual ~LLTexture();
  53. public:
  54. LLTexture(){}
  55. //
  56. //interfaces to access LLViewerTexture
  57. //
  58. virtual S8         getType() const = 0 ;
  59. virtual void       setKnownDrawSize(S32 width, S32 height) = 0 ;
  60. virtual bool       bindDefaultImage(const S32 stage = 0) = 0 ;
  61. virtual void       forceImmediateUpdate() = 0 ;
  62. virtual void       setActive() = 0 ;
  63. virtual S32        getWidth(S32 discard_level = -1) const = 0 ;
  64. virtual S32        getHeight(S32 discard_level = -1) const = 0 ;
  65. private:
  66. //note: do not make this function public.
  67. virtual LLImageGL* getGLTexture() const = 0 ;
  68. virtual void updateBindStatsForTester() = 0 ;
  69. };
  70. #endif