You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.2 KiB
77 lines
2.2 KiB
////////////////////////////////////////////////////////////////////////////
|
|
// File: CuTexImage.h
|
|
// Author: Changchang Wu
|
|
// Description : interface for the CuTexImage class.
|
|
// class for storing data in CUDA.
|
|
//
|
|
// Copyright (c) 2007 University of North Carolina at Chapel Hill
|
|
// All Rights Reserved
|
|
//
|
|
// Permission to use, copy, modify and distribute this software and its
|
|
// documentation for educational, research and non-profit purposes, without
|
|
// fee, and without a written agreement is hereby granted, provided that the
|
|
// above copyright notice and the following paragraph appear in all copies.
|
|
//
|
|
// The University of North Carolina at Chapel Hill make no representations
|
|
// about the suitability of this software for any purpose. It is provided
|
|
// 'as is' without express or implied warranty.
|
|
//
|
|
// Please send BUG REPORTS to ccwu@cs.unc.edu
|
|
//
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
#ifndef CU_TEX_IMAGE_H
|
|
#define CU_TEX_IMAGE_H
|
|
|
|
class GLTexImage;
|
|
struct cudaArray;
|
|
struct textureReference;
|
|
|
|
//using texture2D from linear memory
|
|
|
|
#define SIFTGPU_ENABLE_LINEAR_TEX2D
|
|
|
|
class CuTexImage
|
|
{
|
|
protected:
|
|
void* _cuData;
|
|
cudaArray* _cuData2D;
|
|
int _numChannel;
|
|
size_t _numBytes;
|
|
int _imgWidth;
|
|
int _imgHeight;
|
|
int _texWidth;
|
|
int _texHeight;
|
|
GLuint _fromPBO;
|
|
public:
|
|
virtual void SetImageSize(int width, int height);
|
|
virtual bool InitTexture(int width, int height, int nchannel = 1);
|
|
void InitTexture2D();
|
|
inline void BindTexture(textureReference& texRef);
|
|
inline void BindTexture2D(textureReference& texRef);
|
|
void CopyToTexture2D();
|
|
void CopyToHost(void* buf);
|
|
void CopyToHost(void* buf, int stream);
|
|
void CopyFromHost(const void* buf);
|
|
int CopyToPBO(GLuint pbo);
|
|
void CopyFromPBO(int width, int height, GLuint pbo);
|
|
static int DebugCopyToTexture2D();
|
|
public:
|
|
inline int GetImgWidth(){return _imgWidth;}
|
|
inline int GetImgHeight(){return _imgHeight;}
|
|
inline int GetDataSize(){return _numBytes;}
|
|
public:
|
|
CuTexImage();
|
|
CuTexImage(int width, int height, int nchannel, GLuint pbo);
|
|
virtual ~CuTexImage();
|
|
friend class ProgramCU;
|
|
friend class PyramidCU;
|
|
};
|
|
|
|
//////////////////////////////////////////////////
|
|
//transfer OpenGL Texture to PBO, then to CUDA vector
|
|
//#endif
|
|
#endif // !defined(CU_TEX_IMAGE_H)
|
|
|