Exemplo n.º 1
0
void SdkMesh::load( uint32_t iMesh, VboMesh* target ) const
{
	// create VB
	uint32_t iVB = 0;//TODO: more general
	std::vector<D3D11_INPUT_ELEMENT_DESC> dx11_elements;
	D3DVERTEXELEMENT9* dx9_elements = mSdkMesh->GetVertexElements(iMesh, iVB);
	HR(ConvertDeclaration(dx9_elements, dx11_elements));

	void* pVertices = static_cast<void*>(mSdkMesh->GetRawVerticesAt(iVB));
	size_t nVertices = mSdkMesh->GetNumVertices(iMesh, iVB);
	size_t VertexSize = mSdkMesh->GetVertexStride(iMesh, iVB);

	target->createVertexBuffer(pVertices, nVertices,
		&dx11_elements[0], dx11_elements.size(),VertexSize);

	// create IB
	uint32_t iIB = 0;//TODO: more general
	SDKMESH_INDEX_TYPE idxType = mSdkMesh->GetIndexType(iMesh);
	size_t nIndices = mSdkMesh->GetNumIndices(iMesh);
	if (idxType == IT_16BIT)
	{
		//TODO: potential bug here?
		uint16_t* indices = (uint16_t*)mSdkMesh->GetRawIndicesAt(iIB);
		target->createIndexBuffer(indices, nIndices);
	}
	else if (idxType == IT_32BIT)
	{
		uint32_t* indices = (uint32_t*)mSdkMesh->GetRawIndicesAt(iIB);
		target->createIndexBuffer(indices, nIndices);
	}
	else
	{
		assert(0);
	}
}
Exemplo n.º 2
0
/* Generate the JavaScript corresponding to one CSS1 rule. */
static void ConvertRule(css_node rule, StyleBuffer sb)
{
    css_node selector_list, selector;
    css_node declaration_list;

    if (! rule || rule->node_id != NODE_RULESET)
        return;

    for (selector_list = rule->left; selector_list; 
         selector_list = selector_list->left) {

        selector = selector_list->right;
        if (! selector)
            continue;

        for (declaration_list = rule->right; declaration_list;
             declaration_list = declaration_list->left) {

            if (declaration_list->right) {
                AnteRule(sb);
                ConvertSelector(selector->left, selector->right, sb);
                ConvertDeclaration(declaration_list->right, sb);
                PostRule(sb);
            }
        }
    }
}