📄 frameprocessor.h
字号:
// ___ ___ ___ ___ ___ // /\__\ ___ /\__\ /\ \ /\__\ /\ \. // /::| | /\ \ /::| | /::\ \ /:/ / /::\ \. // /:|:| | \:\ \ /:|:| | /:/\:\ \ /:/ / /:/\:\ \. // /:/|:|__|__ /::\__\ /:/|:| |__ /:/ \:\ \ /:/ / /::\~\:\ \.// /:/ |::::\__\ __/:/\/__/ /:/ |:| /\__\ /:/__/_\:\__\ /:/__/ /:/\:\ \:\__\.// \/__/~~/:/ / /\/:/ / \/__|:|/:/ / \:\ /\ \/__/ \:\ \ \:\~\:\ \/__/// /:/ / \::/__/ |:/:/ / \:\ \:\__\ \:\ \ \:\ \:\__\. // /:/ / \:\__\ |::/ / \:\/:/ / \:\ \ \:\ \/__/ // /:/ / \/__/ /:/ / \::/ / \:\__\ \:\__\. // \/__/ \/__/ \/__/ \/__/ \/__/ // // =============================================================================// Minimalist OpenGL Environment// Parallel Rendering Extension// =============================================================================//// Copyright 2007 Balazs Domonkos// // This program is free software; you can redistribute it and/or// modify it under the terms of the GNU General Public License// as published by the Free Software Foundation; either version 2// of the License, or (at your option) any later version.// // This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.// // You should have received a copy of the GNU General Public License// along with this program; if not, write to the Free Software// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA./// @file FrameProcessor.h/// Generic ParaComp frame processor#ifndef __MINGLE_PARALLEL_PARACOMP_FRAMEPROCESSOR_H__#define __MINGLE_PARALLEL_PARACOMP_FRAMEPROCESSOR_H__// Include class definitions#include <parallel-classes.h>#include <pcapi.h>#if MINGLE_PARACOMP_SUPPORT == 1namespace MinGLE {#define PCCHECKERROR(method, err) if(err!=PC_NO_ERROR) Except(method, pcGetErrorString(err)) class FrameProcessor { protected: static const bool DEFAULT_SORT_REQUEST = false; protected: PCcontext mContext; PCid mFrameId; //unsigned mWidth, mHeight; bool mNeedSorting; PCuint mSortOrder; public: FrameProcessor(PCcontext context, bool needSorting = DEFAULT_SORT_REQUEST); virtual ~FrameProcessor(); inline virtual void beginFrame(PCuint left, PCuint top, PCuint width, PCuint height) { PCerr err = pcFrameBegin( mContext, // our context &mFrameId, // PC will fill this in 1, // this host contributes 1 framelet &left, &top, &width, &height, // framelet attributes mNeedSorting ? &mSortOrder : 0); // order parameter PCCHECKERROR("FrameProcessor::beginFrame", err); } /// Skip contribution pixels to this frame /// Note that you cannot call addFrame() when /// skipFrame is called! inline virtual void skipFrame() { PCerr err = pcFrameBegin( mContext, // our context &mFrameId, // PC will fill this in 0, // no framelets are contributed 0, 0, 0, 0, // dummy framelet attributes 0); // dummy order parameter PCCHECKERROR("FrameProcessor::skipFrame", err); } inline virtual void endFrame() { PCerr err = pcFrameEnd(mContext, mFrameId); PCCHECKERROR("FrameProcessor::endFrame", err); } inline virtual void addFrame() { Except("TODO implement", "FrameProcessor::addFrame"); } inline virtual void setSortOrder(PCuint sortOrder) { mSortOrder = sortOrder; } virtual void displayOutput(const unsigned left, const unsigned top, const unsigned width, const unsigned height); protected: int convertPixelFormat(int pcPixelFormat); }; // ============================================================================= // Optimized version for HP systems class FrameProcessorHP : public FrameProcessor { public: FrameProcessorHP(PCcontext context, bool needSorting = DEFAULT_SORT_REQUEST); inline virtual void addFrame() { PCerr err = pcFrameAddGLFrameletEXT(mContext, mFrameId, 0, 0); PCCHECKERROR("FrameProcessorHP::addFrame", err); } virtual void displayOutput(const unsigned left, const unsigned top, const unsigned width, const unsigned height); }; #undef PCCHECKERROR}#endif // MINGLE_PARACOMP_SUPPORT == 1#endif // __MINGLE_PARALLEL_PARACOMP_FRAMEPROCESSOR_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -