当前位置: 首页>>代码示例>>C++>>正文


C++ VisualGraphics::getMaxLeftCoordOfCanvas方法代码示例

本文整理汇总了C++中VisualGraphics::getMaxLeftCoordOfCanvas方法的典型用法代码示例。如果您正苦于以下问题:C++ VisualGraphics::getMaxLeftCoordOfCanvas方法的具体用法?C++ VisualGraphics::getMaxLeftCoordOfCanvas怎么用?C++ VisualGraphics::getMaxLeftCoordOfCanvas使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在VisualGraphics的用法示例。


在下文中一共展示了VisualGraphics::getMaxLeftCoordOfCanvas方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: applyConvolutionFilter

void VisualTextureContainer::applyConvolutionFilter(const VisualConvolutionFilter& aConvolutionFilter) {
	
	VisualGraphics* theVisualGraphics = VisualGraphics::getInstance();

	int prevReadBuffer = theVisualGraphics->getCurrentColorBufferForPixelReadingOperations();
	theVisualGraphics->setColorBufferForPixelReadingOperations(kGL_BACK_COLOR_BUFFER);

	int prevDrawBuffer = theVisualGraphics->getCurrentColorBufferForPixelDrawingOperations();
	theVisualGraphics->setColorBufferForPixelDrawingOperations(kGL_BACK_COLOR_BUFFER);
	
	UInt32* prevPixels = NULL;

	char errStr[512];

	UInt8 numberOfBytesPerChannel = 0;
	UInt8 numberOfChannels = 0; // channel == color resp. alpha channel
	UInt8 numberOfBytesPerPixel = 0;
	UInt32 numberOfBytesPerRow = 0;
	if ((this->pixelFormat == kGL_RGBA) || (this->pixelFormat == kGL_BGRA)) {
		numberOfChannels = 4;
	} else {
		sprintf(errStr, "unknown format %d in file: %s (line: %d) [%s])", this->pixelFormat, __FILE__, __LINE__, __FUNCTION__);
		writeLog(errStr);
		return;
	}
	
	if ((this->dataType == kGL_UNSIGNED_INT_8_8_8_8_REV) || (this->dataType == kGL_UNSIGNED_INT_8_8_8_8) || (this->dataType == kGL_UNSIGNED_BYTE)) {
		numberOfBytesPerChannel = 1; // // 1 byte (== 8 bits) per color/channel
	} else {
		sprintf(errStr, "unknown type %d in file: %s (line: %d) [%s])", this->dataType, __FILE__, __LINE__, __FUNCTION__);
		writeLog(errStr);
		return;
	}
	
	numberOfBytesPerPixel = numberOfBytesPerChannel * numberOfChannels;
	numberOfBytesPerRow = numberOfBytesPerPixel * this->textureWidth;

	// read previous pixels
	if ((this->pixelFormat == kGL_RGBA) || (this->pixelFormat == kGL_BGRA)) {
		prevPixels = (UInt32*)calloc((numberOfBytesPerRow / numberOfBytesPerPixel) * this->textureHeight, numberOfBytesPerPixel);
	}
	theVisualGraphics->readPixels(theVisualGraphics->getMaxLeftCoordOfCanvas(), theVisualGraphics->getMaxBottomCoordOfCanvas(), this->textureWidth, this->textureHeight, &prevPixels, this->pixelFormat, this->dataType);

	UInt32* pixels = this->getTexturePixels(this->pixelFormat, this->dataType);
	UInt32* passedPixels = (UInt32*)malloc(this->textureWidth * this->textureHeight * 4);
	memcpy(passedPixels, pixels, this->textureWidth * this->textureHeight * 4); // VisualStudio does not like when we pass a non-const pointer to instance variable (crashes in runtime)
	theVisualGraphics->drawPixels((UInt32**)&(passedPixels), theVisualGraphics->getMaxLeftCoordOfCanvas(), theVisualGraphics->getMaxBottomCoordOfCanvas(), this->textureWidth, this->textureHeight, this->pixelFormat, this->dataType, &aConvolutionFilter);
	if (passedPixels != NULL) {
		free(passedPixels);
		passedPixels = NULL;
	}

	theVisualGraphics->copyFramebufferToTexture(this->textureName, this->useRectExtension, 0, 0, this->textureWidth, this->textureHeight, this->pixelFormat, this->dataType);

	// restore previous pixels
	theVisualGraphics->drawPixels(&prevPixels, theVisualGraphics->getMaxLeftCoordOfCanvas(), theVisualGraphics->getMaxBottomCoordOfCanvas(), this->textureWidth, this->textureHeight, this->pixelFormat, this->dataType);
	
	free(prevPixels);

	theVisualGraphics->setColorBufferForPixelDrawingOperations(prevDrawBuffer);
	theVisualGraphics->setColorBufferForPixelReadingOperations(prevReadBuffer);

	if (this->pixelBuffer != NULL) {
		free(this->pixelBuffer);
		this->pixelBuffer = NULL;
	}
	
}
开发者ID:alexpaulzor,项目名称:projectm,代码行数:68,代码来源:VisualTextureContainer.cpp

示例2: monitorRenderMessageProcess

void monitorRenderMessageProcess() {

	static float framesPerSecond = 0.0f;
	static UInt16 frameCount = 0;
	::Rect viewportRect;
	UInt32 elapsedMilliseconds, remainingMilliseconds, totalMilliseconds = 0;
	VisualAudioLab* theVisualAudioLab = NULL;
	VisualPlayerState* theVisualPlayerState = NULL;
	VisualGraphics* theVisualGraphics = NULL;
	UInt8 playState;
	char cStr64[64];
	
	theVisualPlayerState = VisualPlayerState::getInstance();
	
    elapsedMilliseconds = VisualTiming::getElapsedMilliSecsSinceReset("fps");
    
    if (elapsedMilliseconds > 1000) {
        framesPerSecond = (float)frameCount / (float)elapsedMilliseconds * 1000.0f;
        frameCount = 0;
        VisualTiming::resetTimestamp("fps");
    }
	frameCount++;
    
    sprintf(cStr64, "%.2f",  framesPerSecond);
    setProcessInfo("FramesPerSecond", cStr64);
	
	theVisualGraphics = VisualGraphics::getInstance();

	setProcessInfo("RendererName",theVisualGraphics->getRendererName());

	setProcessInfo("RendererVendor",theVisualGraphics->getRendererVendor());

	setProcessInfo("RendererVersion",theVisualGraphics->getRendererVersion());

	sprintf(cStr64, "%#x", theVisualGraphics->getGLVersion());
	setProcessInfo("GLVersion", cStr64);
	
	sprintf(cStr64, "%ld", theVisualGraphics->getMaxTextureSize());
	setProcessInfo("Maximum Texture Size", cStr64);
	
	// screen measurements
	sprintf(cStr64, "width: %d, height: %d, refreshRate: %d", theVisualGraphics->getScreenWidth(), theVisualGraphics->getScreenHeight(), theVisualGraphics->getRefreshRateOfScreen());
	setProcessInfo("Screen", cStr64);
	
	sprintf(cStr64, "%d", theVisualGraphics->getBitsPerPixelOfScreen());
	setProcessInfo("BitsPerPixel", cStr64);
	
	sprintf(cStr64, "%d", theVisualGraphics->getCanvasPixelHeight());
	setProcessInfo("CanvasPixelHeight", cStr64);
	
	sprintf(cStr64, "%d", theVisualGraphics->getCanvasPixelWidth());
	setProcessInfo("CanvasPixelWidth", cStr64);

	::Rect theCanvasRect;
	theVisualGraphics->getCanvasRect(&theCanvasRect);
	sprintf(cStr64, "top: %d, left: %d", theCanvasRect.top, theCanvasRect.left);
	setProcessInfo("CanvasRectTopLeft", cStr64);
	sprintf(cStr64, "bottom: %d, right: %d", theCanvasRect.bottom, theCanvasRect.right);
	setProcessInfo("CanvasRectBottomRight", cStr64);

	::Rect theCanvasSurroundingRect;
	theVisualGraphics->getCanvasSurroundingRect(&theCanvasSurroundingRect);
	sprintf(cStr64, "top: %d, left: %d", theCanvasSurroundingRect.top, theCanvasSurroundingRect.left);
	setProcessInfo("CanvasSurroundRectTopLeft", cStr64);
	sprintf(cStr64, "bottom: %d, right: %d", theCanvasSurroundingRect.bottom, theCanvasSurroundingRect.right);
	setProcessInfo("CanvasSurroundRectBottomRight", cStr64);
	
	sprintf(cStr64, "top: %.2f, left: %.2f", theVisualGraphics->getMaxTopCoordOfCanvas(), theVisualGraphics->getMaxLeftCoordOfCanvas());
	setProcessInfo("CoordMaxTopLeft", cStr64);
	sprintf(cStr64, "bottom: %.2f, right: %.2f", theVisualGraphics->getMaxBottomCoordOfCanvas(), theVisualGraphics->getMaxRightCoordOfCanvas());
	setProcessInfo("CoordMaxBottomRight", cStr64);
	sprintf(cStr64, "near: %.2f, far: %.2f", theVisualGraphics->getMaxNearCoordOfCanvas(), theVisualGraphics->getMaxFarCoordOfCanvas());
	setProcessInfo("CoordMaxNearFar", cStr64);

	theVisualGraphics->getViewportRect(&viewportRect);
	sprintf(cStr64, "top: %d, left: %d, bottom: %d, right: %d",  viewportRect.top, viewportRect.left, viewportRect.bottom, viewportRect.right);
	setProcessInfo("ViewportRect", cStr64);

	playState = theVisualPlayerState->getAudioPlayState();
	switch (playState) {
		case kAudioIsPlaying:
			sprintf(cStr64, "kAudioIsPlaying");
			break;
		case kAudioPlayStarted:
			sprintf(cStr64, "kAudioPlayStarted");
			break;		
		case kAudioPlayResumed:
			sprintf(cStr64, "kAudioPlayResumed");
			break;
		case kAudioPlayPaused:
			sprintf(cStr64, "kAudioPlayPaused");
			break;
		case kAudioIsNotPlaying:
			sprintf(cStr64, "kAudioIsNotPlaying");
			break;
		default:
			sprintf(cStr64, "unknown");
	}
	setProcessInfo("AudioPlayState", cStr64);
	
//.........这里部分代码省略.........
开发者ID:alexpaulzor,项目名称:projectm,代码行数:101,代码来源:VisualDispatch.cpp


注:本文中的VisualGraphics::getMaxLeftCoordOfCanvas方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。