예제 #1
0
Texture::Texture(unsigned int p_width, unsigned int p_height, Texture::InternalFormat::Enum p_format):
	m_texture(generateTextureId()),
	m_width(p_width),
	m_height(p_height)
{
	setFilterMode(FilterMode::Point);
	setWrapMode(WrapMode::ClampToEdge);	
	texImage2D(p_format, p_width, p_height, NULL);	
}
예제 #2
0
ScriptCompleter::ScriptCompleter()
: QCompleter()
, m_model(new QStandardItemModel)
{
    setCompletionMode(QCompleter::PopupCompletion);
    setCaseSensitivity(Qt::CaseSensitive);
    setFilterMode(Qt::MatchStartsWith);

    setModel(m_model);
}
예제 #3
0
	bool RenderTextureOpenGL::createTexture(const Vector2& size, RenderTextureFormat format)
	{
		GLenum target = getTarget();
		glBindTexture(target, getTextureId());
		glTexImage2D(target, 0, RENDER_TEXTURE_FORMAT_MAP[format], (GLsizei)size.x, (GLsizei)size.y, 0,
					 RENDER_TEXTURE_NRMFMT_MAP[format], GL_FLOAT, 0);
		glBindTexture(target, 0);

		setFilterMode(FM_POINT);
		setWrapMode(TWM_CLAMP);
		return true;
	}
예제 #4
0
//------------------------------------------------------------------------------
//## Basic
TEST_F(Test_Shader_Shader, IndependentSamplerState)
{
    auto shader1 = Shader::create(LN_ASSETFILE("Shader/IndependentSamplerState.fx"));

    auto vertexDecl1 = newObject<VertexLayout>();
    vertexDecl1->addElement(0, VertexElementType::Float3, VertexElementUsage::Position, 0);
    vertexDecl1->addElement(0, VertexElementType::Float2, VertexElementUsage::TexCoord, 0);

    struct Vertex
    {
        Vector3 pos;
        Vector2 uv;
    };
    Vertex v[] = {
        { { -1, 1, 0 }, { 0, 0 }, },	// 0.5 で中央の face からサンプリングする
        { { 0, 1, 0 }, { 1, 0 }, },
        { { -1, 0, 0 }, { 0, 1 }, },
        { { 0, 0, 0 }, { 1, 1 }, },
    };
    auto vb1 = newObject<VertexBuffer>(sizeof(v), v, GraphicsResourceUsage::Static);

    auto tex1 = newObject<Texture2D>(2, 2, TextureFormat::RGBA8);
    auto bmp1 = tex1->map(MapMode::Write);
    bmp1->setPixel32(0, 0, ColorI(255, 0, 0, 255));
    bmp1->setPixel32(1, 0, ColorI(255, 0, 255, 255));
    bmp1->setPixel32(0, 1, ColorI(0, 255, 0, 255));
    bmp1->setPixel32(1, 1, ColorI(0, 0, 255, 255));

    // TODO: まだ SamplerState 直接指定をサポートしていないので Texture に対してセットする方法でテストケースだけ用意しておく。
    // 後でサポートするとき、shader1->findParameter("mySamplerState")->setSamplerState(samplerState); とかに書き換える。
    auto samplerState = newObject<SamplerState>();
    samplerState->setFilterMode(TextureFilterMode::Linear);
    tex1->setSamplerState(samplerState);

    shader1->findParameter("_Texture")->setTexture(tex1);

    auto ctx = Engine::graphicsContext();
    TestEnv::resetGraphicsContext(ctx);
    ctx->setVertexLayout(vertexDecl1);
    ctx->setVertexBuffer(0, vb1);
    ctx->setIndexBuffer(nullptr);
    ctx->setShaderPass(shader1->techniques()[0]->passes()[0]);

    // * [ ] default
    {
        ctx->clear(ClearFlags::All, Color::White, 1.0f, 0);
		ctx->setPrimitiveTopology(PrimitiveTopology::TriangleStrip);
        ctx->drawPrimitive(0, 2);

        ASSERT_SCREEN(LN_ASSETFILE("Shader/Result/Test_Shader_Shader-IndependentSamplerState-1.png"));
    }
}
예제 #5
0
Texture::Texture(unsigned int p_width, unsigned int p_height, unsigned char p_byte):
	m_texture(generateTextureId()),
	m_width(p_width),
	m_height(p_height)
{
	unsigned char* data = new unsigned char[p_width * p_height* 4];
	std::fill(data, data + p_width * p_height * 4, p_byte);

	setFilterMode(FilterMode::Point);
	setWrapMode(WrapMode::ClampToEdge);
	texImage2D(InternalFormat::RGBA8, p_width, p_height, data);
	delete[] data;
}
예제 #6
0
WizMessageCompleter::WizMessageCompleter(QWidget *parent)
    : QCompleter(parent)
{
    m_title = qobject_cast<QLineEdit*>(parent);
    Q_ASSERT(m_title);

    setCaseSensitivity(Qt::CaseInsensitive);
    setWrapAround(false);

    setCompletionColumn(0);
    setCompletionRole(Qt::EditRole);
#if QT_VERSION >= 0x050200
    setFilterMode(Qt::MatchContains);
#endif

    connect(WizGlobal::instance(), SIGNAL(viewNoteLoaded(WizDocumentView*,const WIZDOCUMENTDATA&,bool)),
            SLOT(onNoteLoaded(WizDocumentView*,const WIZDOCUMENTDATA&,bool)));
}
void QgsAttributeTableFilterModel::setFilteredFeatures( const QgsFeatureIds& ids )
{
  mFilteredFeatures = ids;
  setFilterMode( ShowFilteredList );
  invalidateFilter();
}
예제 #8
0
	bool D3D9texture::loadFile2D()
	{
		D3D9_SCOPELOCK;

		HRESULT hr;
		const byte_t* data;
		int flags = 0;

		if (!(m_initFlags.isSet(IF_NoMipmap)))
			flags |= Image::Mipmap;

		flags |= Image::ExpandAlpha;

		std::auto_ptr<Image> imagefile(new Image);
		if (!imagefile->loadFile(m_name, flags)) {
//			Debugf("D3D9texture::loadFile2D: can't find image file for %s\n", m_name.c_str());
			return false;
		}

		m_width = imagefile->getWidth();
		m_height = imagefile->getHeight();
		//		mDesc.format = imagefile->getFormat();
		if (!Math::isPowerOfTwo(m_width) || !Math::isPowerOfTwo(m_height)) {
			//			if (!(mDesc.flags & TexFlag_allowNPOT))
			Errorf("GLtexture::loadFile2D: texture %s size isn't power of two", m_name.c_str());
			//			else
			//				Debugf("GLtexture::loadFile2D: texture %s size isn't power of two\n", mDesc.name.c_str());
		}

		m_format = imagefile->getFormat();

		D3DFORMAT d3dformat;

		trTexFormat(imagefile->getFormat(), d3dformat);

		DWORD d3dusage = 0;

		int mipdown = image_mip->getInteger();
		if (m_initFlags.isSet(IF_NoMipmap) || imagefile->getNumMipmapLevels() <= 1) {
			m_isMipmaped = false;
			mipdown = 0;
		} else {
			m_isMipmaped = true;
			mipdown = Math::clamp(mipdown, 0, imagefile->getNumMipmapLevels()-1);

			m_width >>= mipdown;
			m_height >>= mipdown;
			if (m_width < 1) m_width = 1;
			if (m_height < 1) m_height = 1;
		}


//		m_initFlags = 0;

		if (m_initFlags.isSet(Texture::IF_RenderTarget)) {
			Errorf("Can't load render target from a file");
		}

		if (m_initFlags.isSet(Texture::IF_AutoGenMipmap)) {
			d3dusage |= D3DUSAGE_AUTOGENMIPMAP;
			m_isMipmaped = true;
			m_hardwareGenMipmap = checkIfSupportHardwareMipmapGeneration(d3dformat, d3dusage);

			if (!m_hardwareGenMipmap) {
				d3dusage &= ~D3DUSAGE_AUTOGENMIPMAP;
			}
		}

		if (m_object == 0) {
			V(d3d9Device->CreateTexture(m_width, m_height, !m_isMipmaped, d3dusage, d3dformat, D3DPOOL_MANAGED, &m_object, 0));
		}

		int width, height;
		width = m_width;
		height = m_height;
		for (DWORD i = 0; i < m_object->GetLevelCount(); i++) {
			if (i + mipdown >= (DWORD)imagefile->getNumMipmapLevels()) {
				// if no image for this level, break
				break;
			}

			uint_t datasize = imagefile->getFormat().calculateDataSize(width, height);
			m_videoMemoryUsed += datasize;

			data = imagefile->getData(i + mipdown);
#if 0
			LPDIRECT3DSURFACE9 surface;

			V(m_object->GetSurfaceLevel(i, &surface));

			D3DXLoadSurfaceFromMemory(surface, 0, 0, data, d3dformat, pitch, 0, rect, D3DX_FILTER_NONE, 0);
#else
			D3DLOCKED_RECT lockedRect;
			V(m_object->LockRect(i, &lockedRect, 0, 0));
			int mypitch = m_format.calculateDataSize(width, 1);
			if (mypitch != lockedRect.Pitch) {
				Errorf("mypitch != lockedRect.Pitch");
			}
			memcpy(lockedRect.pBits, data, datasize);
			V(m_object->UnlockRect(i));
#endif
			width >>= 1;
			height >>= 1;
			if (width < 1) width = 1;
			if (height < 1) height = 1;

			if (m_initFlags.isSet(Texture::IF_AutoGenMipmap)) {
//				break;
			}
		}

		if (m_initFlags.isSet(Texture::IF_AutoGenMipmap)) {
			generateMipmap();
		}

		if (m_isMipmaped) {
			setFilterMode(FM_Trilinear);
		} else {
			setFilterMode(FM_Linear);
		}

		setClampMode(CM_Repeat);

		setPrivateData();

		g_statistic->addValue(stat_textureMemory, m_videoMemoryUsed);

		return true;
	}