CCentralRunnerInterface::CCentralRunnerInterface () : CCentralAbstractInterface() { // Festlegung der benötigten Parameter parameter_ = QStringList() << "Stationsnr." << "Stationsname" << "Punkte 'Spielidee'" << "Punkte 'Spielausfuehrung'" << "Punkte 'Atmosphaere'"; buildInputLayout(); buildInputValidators(); buildNameLists(); buildGroupLists(); }
void DxBuilder::buildVertexShader(const ASTEffect& effect, ASTTechnique& technique) { const ASTFunction* pfunction = effect.findFunction(technique.mVertex.mEntry); if ( pfunction->mArguments.size() == 1 && pfunction->mArguments[0]->mpType->isStruct() ) { const ASTStruct& input = pfunction->mArguments[0]->mpType->getStruct(); technique.mpLayout = buildInputLayout(input); } String code = UTEXT("// generated vertex shader\n\n"); String num; NumberConverter& conv = NumberConverter::getInstance(); for ( std::size_t index = 0; index < effect.mBuffers.size(); ++index ) { const ASTBuffer* pbuffer = effect.mBuffers[index]; code += UTEXT("cbuffer ") + pbuffer->mName; int reg = pbuffer->mRegister; if ( reg == -1 ) reg = (int) index; code += UTEXT(" : register(b") + conv.format(num, reg) + UTEXT(")\n{") + pbuffer->mBody + UTEXT("};\n\n"); } code += buildStructs(effect, *pfunction); code += buildFunction(*pfunction); std::string data = code.toUtf8(); std::string entry = technique.mVertex.mEntry.toUtf8(); std::string target = technique.mVertex.mTarget.toUtf8(); uint32_t flags = D3DCOMPILE_ENABLE_STRICTNESS; ID3DBlob *presult, *perror; HRESULT hr = D3DCompile(data.c_str(), data.length(), NULL, NULL, D3D_COMPILE_STANDARD_FILE_INCLUDE, entry.c_str(), target.c_str(), flags, 0, &presult, &perror); if ( FAILED(hr) ) { std::string d3derror = "Shader compile error: " + std::string((const char*)perror->GetBufferPointer()); throw std::exception(d3derror.c_str()); } technique.mVertex.mCompiledCode.writeBlob(presult->GetBufferPointer(), presult->GetBufferSize()); }