コード例 #1
0
ファイル: qtframebuffer.cpp プロジェクト: AnanthaRajuC/CEmu
void paintFramebuffer(QPainter *p) {
    if (!(lcd.control & 0x800)) {
        p->fillRect(p->window(), Qt::black);
        p->setPen(Qt::white);
        p->drawText(p->window(), Qt::AlignCenter, QObject::tr("LCD OFF"));
    } else {
        QImage img = renderFramebuffer();
        p->drawImage(p->window(), img);
    }
}
コード例 #2
0
void MainWindow::screenshot()
{
    QImage image = renderFramebuffer();

    QString filename = QFileDialog::getSaveFileName(this, tr("Save Screenshot"), QString(), "PNG images (*.png)");
    if(filename.isNull())
        return;

    if(!image.save(filename, "PNG"))
        QMessageBox::critical(this, tr("Screenshot failed"), tr("Failed to save screenshot!"));
}
コード例 #3
0
ファイル: gl-400-fbo-shadow.cpp プロジェクト: Daft-Freak/vogl
void display()
{
	glBindBuffer(GL_UNIFORM_BUFFER, BufferName[buffer::TRANSFORM]);
	glm::mat4* Pointer = (glm::mat4*)glMapBufferRange(
		GL_UNIFORM_BUFFER, 0, sizeof(glm::mat4) * 3,
		GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_BUFFER_BIT);

	// Update of the MVP matrix for the render pass
	{
		glm::mat4 Projection = glm::perspective(45.0f, 4.0f / 3.0f, 0.01f, 5.0f);
		glm::mat4 ViewTranslate = glm::translate(glm::mat4(1.0f), glm::vec3(0.0f, 0.0f, -Window.TranlationCurrent.y + 3.0f));
		glm::mat4 ViewRotateX = glm::rotate(ViewTranslate, Window.RotationCurrent.y - 60.f, glm::vec3(1.f, 0.f, 0.f));
		glm::mat4 View = glm::rotate(ViewRotateX, Window.RotationCurrent.x + 30.f, glm::vec3(0.f, 0.f, 1.f));
		glm::mat4 Model = glm::mat4(1.0f);
		*(Pointer + 0) = Projection * View * Model;
	}

	// Update of the MVP matrix for the depth pass
	{
		glm::mat4 Projection = glm::ortho(-1.0f, 1.0f, -1.0f, 1.0f,-4.0f, 8.0f);
		glm::mat4 View = glm::lookAt(glm::vec3(0.5, 1.0, 2.0), glm::vec3(0), glm::vec3(0, 0, 1));
		glm::mat4 Model = glm::mat4(1.0f);
		glm::mat4 DepthMVP = Projection * View * Model;
		*(Pointer + 1) = DepthMVP;

		glm::mat4 BiasMatrix(
			0.5, 0.0, 0.0, 0.0, 
			0.0, 0.5, 0.0, 0.0,
			0.0, 0.0, 0.5, 0.0,
			0.5, 0.5, 0.5, 1.0);

		*(Pointer + 2) = BiasMatrix * DepthMVP;
	}

	glUnmapBuffer(GL_UNIFORM_BUFFER);

	glBindBufferBase(GL_UNIFORM_BUFFER, glf::semantic::uniform::TRANSFORM0, BufferName[buffer::TRANSFORM]);

	renderShadow();
	renderFramebuffer();
	//renderSplash();

	glf::swapBuffers();
}
コード例 #4
0
ファイル: gif.cpp プロジェクト: alberthdev/CEmu
static bool gif_write_frame(GifWriter *frameWriter, unsigned int delay) {
    return GifWriteFrame(frameWriter, renderFramebuffer(&lcd).convertToFormat(QImage::Format_RGBA8888).bits(), 320, 240, delay);
}