⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ogltexture.hpp

📁 用于GPU通用计算的编程语言BrookGPU 0.4
💻 HPP
字号:
// ogltexture.hpp#ifndef OGLTEXTURE_HPP#define OGLTEXTURE_HPP#include "../gpucontext.hpp"namespace brook {     /* Virtual class for textures */  class OGLTexture   {  public:        OGLTexture ( unsigned int inWidth,                  unsigned int inHeight,                  GPUContext::TextureFormat inFormat ) :      _width(inWidth), _height(inHeight), _format(inFormat)    { }    /* This guy is the real constructor */    OGLTexture ( unsigned int width,                 unsigned int height,                 GPUContext::TextureFormat format,                 const unsigned int glFormat[4],                 const unsigned int glType[4],                 const unsigned int sizeFactor[4]);    virtual ~OGLTexture ();    /* This function tests if a data pointer     ** with a particular element stride and     ** size can be directly passed into     ** glTexSubImage.    */    virtual bool    isFastSetPath( unsigned int inStrideBytes,                    unsigned int inWidth,                   unsigned int inHeight,                   unsigned int inElemCount ) const;    /* Same as isFastGetPath, but for    ** returning data into glReadPixels    */    virtual bool    isFastGetPath( unsigned int inStrideBytes,                    unsigned int inWidth,                   unsigned int inHeight,                   unsigned int inElemCount ) const;    /* Perform a copy into the packed     ** texture format.  Individual backends    ** may override this in case the masquerade    ** float2 as RGBA texture, etc.    */    virtual void     copyToTextureFormat( const float *src,                          unsigned int inStrideBytes,                          unsigned int inElemCount,                         float *dst) const;    /* Same as copyToTextureFormat except for     ** copying the data out of the packed format    */    virtual void     copyFromTextureFormat( const float *src,                            unsigned int inStrideBytes,                            unsigned int inElemCount,                           float *dst) const;    /* Basic accessor functions */    unsigned int width()                 const { return _width;    }    unsigned int height()                const { return _height;   }    unsigned int bytesize()              const { return _bytesize; }    unsigned int components()            const { return _components; }    GPUContext::TextureFormat format()   const { return _format;   }    unsigned int id()                    const { return _id;       }    /* Returns the vendor specific "format"     ** parameter for glReadPixels and glTexImage2D    ** for float textures.    */    int nativeFormat()       const { return _nativeFormat; }    // TIM: these are really janky functions...    void getRectToCopy(      unsigned int inRank, const unsigned int* inDomainMin, const unsigned int* inDomainMax, const unsigned int* inExtents,      int& outMinX, int& outMinY, int& outMaxX, int& outMaxY, size_t& outBaseOffset, bool& outFullStream, bool inUsesAddressTranslation );    void setATData(      const float* inStreamData, unsigned int inStrideBytes, unsigned int inRank,      const unsigned int* inDomainMin, const unsigned int* inDomainMax, const unsigned int* inExtents,      float* ioTextureData );    void getATData(      float* outStreamData, unsigned int inStrideBytes, unsigned int inRank,      const unsigned int* inDomainMin, const unsigned int* inDomainMax, const unsigned int* inExtents,      const float* inTextureData );  private:    unsigned int _width, _height, _bytesize;    unsigned int _components;    unsigned int _elemsize;    GPUContext::TextureFormat _format;    unsigned int _id;    unsigned int _nativeFormat;  };}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -