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


C++ createShader函数代码示例

本文整理汇总了C++中createShader函数的典型用法代码示例。如果您正苦于以下问题:C++ createShader函数的具体用法?C++ createShader怎么用?C++ createShader使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


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

示例1: init

// Initialization code
void init()
{
	// Initializes the glew library
	glewInit();
	glEnable(GL_DEPTH_TEST);

	//Create shader program
	std::string vertShader = readShader("VertexShader.glsl");
	std::string fragShader = readShader("FragmentShader.glsl");

	vertex_shader = createShader(vertShader, GL_VERTEX_SHADER);
	fragment_shader = createShader(fragShader, GL_FRAGMENT_SHADER);

	program = glCreateProgram();
	glAttachShader(program, vertex_shader);
	glAttachShader(program, fragment_shader);
	glLinkProgram(program);

	//Generate the View Projection matrix
	glm::mat4 view = glm::lookAt(glm::vec3(0.0f, 0.0f, 2.0f), glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(0.0f, 1.0f, 0.0f));
	glm::mat4 proj = glm::perspective(45.0f, 800.0f / 800.0f, 0.1f, 100.0f);
	VP = proj * view;

	//Get uniforms
	uniMVP = glGetUniformLocation(program, "MVP");
	uniHue = glGetUniformLocation(program, "hue");

	//Set options
	glFrontFace(GL_CCW);
	glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
}
开发者ID:IGME-RIT,项目名称:physics-secondOrderNewtonEulerLinear,代码行数:32,代码来源:main.cpp

示例2: loadProgram

//------------------------------------------------------------------------------
GLuint loadProgram( const std::string &name ){
    GLuint program{0};

    std::vector<GLuint> shaders;
    std::list<std::string> available = {"1.20","3.30"};

    std::string glslv;

    const GLubyte * glslVersion = glGetString( GL_SHADING_LANGUAGE_VERSION );
    std::string sv(reinterpret_cast<const char*>(glslVersion));

    for( auto i = available.begin(); i != available.end() ; ++i ){
        if( 0 == sv.find(*i) ){
            glslv = *i;
            break;
        }
    }

    if( "" == glslv ){
        printf( "Invalid shader version: %s\n", sv.c_str());
        exit(EXIT_FAILURE);
    }

    std::string strVertexShader = name+"."+glslv+".vert";
    std::string strFragmentShader = name+"."+glslv+".frag";

    shaders.push_back( createShader( GL_VERTEX_SHADER, strVertexShader ) );
    shaders.push_back( createShader( GL_FRAGMENT_SHADER, strFragmentShader ) );

    program = createProgram( shaders );

    std::for_each( shaders.begin(), shaders.end(), glDeleteShader );

    return program;
}
开发者ID:zhensydow,项目名称:ljcsandbox,代码行数:36,代码来源:shaders.cpp

示例3:

	bool COGLES2SLMaterialRenderer::init(s32& outMaterialTypeNr,
			const c8* vertexShaderProgram,
			const c8* pixelShaderProgram,
			bool registerMaterial )
	{
		outMaterialTypeNr = -1;

		if ( Program == 0 && !createProgram() )
			return false;

		if ( vertexShaderProgram )
			if ( !createShader( GL_VERTEX_SHADER, vertexShaderProgram, "" ) )
				return false;

		if ( pixelShaderProgram )
			if ( !createShader( GL_FRAGMENT_SHADER, pixelShaderProgram, "" ) )
				return false;

		for ( size_t i = 0; i < EVA_COUNT; ++i )
			glBindAttribLocation( Program, i, sBuiltInVertexAttributeNames[i] );

		if ( !linkProgram() )
			return false;

		// register myself as new material
		if ( registerMaterial )
			outMaterialTypeNr = Driver->addMaterialRenderer( this );
		return true;
	}
开发者ID:codeman001,项目名称:gsleveleditor,代码行数:29,代码来源:COGLES2SLMaterialRenderer.cpp

示例4: createShader

// bind shaders by vertex shader file and fragment shader fie
void CShader::createShaderProgram() {
    GLint vs = -1;
    GLint gs = -1;
    GLint ts = -1;
    GLint fs = -1;

    vs = createShader( _vs.c_str(), GL_VERTEX_SHADER );
    fs = createShader( _fs.c_str(), GL_FRAGMENT_SHADER );
    assert(  vs >= 0 );
    assert(  fs >= 0 );

    if( _gs!= "" ) {
        gs = createShader( _gs.c_str(), GL_GEOMETRY_SHADER );
        assert( gs >= 0 );
    }

    // bypass tessellation shader for now
    if( _ts != "" ) {
        // ts = createShader( _ts.c_str(), gl_tessshader)
    }

    _sp = createShaderProgram( vs, gs, ts, fs );  
    
    _inited = true;
}
开发者ID:bella8905,项目名称:OpenGL_Practice,代码行数:26,代码来源:Shader.cpp

示例5: createShaderProgram

static GLuint createShaderProgram(const char *vertexShaderSrc, const char *fragmentShaderSrc) {
    GLuint program = glCreateProgram();
    glAttachShader(program, createShader(vertexShaderSrc, GL_VERTEX_SHADER));
    glAttachShader(program, createShader(fragmentShaderSrc, GL_FRAGMENT_SHADER));
    glLinkProgram(program);
    return program;
}
开发者ID:Chronodt,项目名称:emscripten,代码行数:7,代码来源:test_webgl_context_attributes_common.c

示例6: gl_init

static void gl_init(void) {
    GLuint program = glCreateProgram();
    glAttachShader(program, createShader(vertex_shader  , GL_VERTEX_SHADER));
    glAttachShader(program, createShader(fragment_shader, GL_FRAGMENT_SHADER));
    glLinkProgram(program);
    char msg[512];
    glGetProgramInfoLog(program, sizeof msg, NULL, msg);
    std::cout << "info: " <<  msg << std::endl;
    glUseProgram(program);
    std::vector<float> elements(nbNodes);
    int count = 0;
    for (float x=0; x < nbNodes; ++x ) {
        elements[count] = count;
        ++count;
    }
    /*Create one texture to store all the needed information */
    glGenTextures(1, &nodeTexture);
    /* Store the vertices in a vertex buffer object (VBO) */
    glGenBuffers(1, &indicesVBO);
    glBindBuffer(GL_ARRAY_BUFFER, indicesVBO);
    glBufferData(GL_ARRAY_BUFFER, elements.size() * sizeof(float), &elements[0], GL_STATIC_DRAW);
    /* Get the locations of the uniforms so we can access them */
    nodeSamplerLocation      = glGetUniformLocation(program, "nodeInfo");
    glBindAttribLocation(program, 0, "indices");
#ifndef __EMSCRIPTEN__ // GLES2 & WebGL do not have these, only pre 3.0 desktop GL and compatibility mode GL3.0+ GL do.
    //Enable glPoint size in shader, always enable in Open Gl ES 2.
    glEnable(GL_VERTEX_PROGRAM_POINT_SIZE);
    glEnable(GL_POINT_SPRITE);
#endif
}
开发者ID:dragonCASTjosh,项目名称:emscripten-sdk,代码行数:30,代码来源:float_tex.cpp

示例7: createShader

//------------------------------------------------------------------------------
// setupGenericShaders - This function is totally not needed on PC because there
// is fixed-function support in D3D9
//------------------------------------------------------------------------------
inline void GFXD3D9Device::setupGenericShaders( GenericShaderType type /* = GSColor */ )
{
#ifdef WANT_TO_SIMULATE_UI_ON_360
   if( mGenericShader[GSColor] == NULL )
   {
      mGenericShader[GSColor] =           createShader( "shaders/common/genericColorV.hlsl", 
         "shaders/common/genericColorP.hlsl", 
         2.f );

      mGenericShader[GSModColorTexture] = createShader( "shaders/common/genericModColorTextureV.hlsl", 
         "shaders/common/genericModColorTextureP.hlsl", 
         2.f );

      mGenericShader[GSAddColorTexture] = createShader( "shaders/common/genericAddColorTextureV.hlsl", 
         "shaders/common/genericAddColorTextureP.hlsl", 
         2.f );
   }

   mGenericShader[type]->process();

   MatrixF world, view, proj;
   mWorldMatrix[mWorldStackSize].transposeTo( world );
   mViewMatrix.transposeTo( view );
   mProjectionMatrix.transposeTo( proj );

   mTempMatrix = world * view * proj;

   setVertexShaderConstF( VC_WORLD_PROJ, (F32 *)&mTempMatrix, 4 );
#else
   disableShaders();
#endif
}
开发者ID:adhistac,项目名称:ee-client-2-0,代码行数:36,代码来源:gfxD3D9Device.cpp

示例8: defined

void COpenGLSLMaterialRenderer::init(s32& outMaterialTypeNr,
	const c8* vertexShaderProgram,
	const c8* pixelShaderProgram)
{
	outMaterialTypeNr = -1;

	if (!createProgram())
		return;

#if defined(GL_ARB_vertex_shader) && defined (GL_ARB_fragment_shader)
	if (vertexShaderProgram)
		if (!createShader(GL_VERTEX_SHADER_ARB, vertexShaderProgram))
			return;


	if (pixelShaderProgram)
		if (!createShader(GL_FRAGMENT_SHADER_ARB, pixelShaderProgram))
			return;
#endif

	if (!linkProgram())
		return;

	// register myself as new material
	outMaterialTypeNr = Driver->addMaterialRenderer(this);
}
开发者ID:jivibounty,项目名称:irrlicht,代码行数:26,代码来源:COpenGLSLMaterialRenderer.cpp

示例9:

	bool COGLES2SLMaterialRenderer::init(s32& outMaterialTypeNr,
			const c8* vertexShaderProgram,
			const c8* pixelShaderProgram,
			bool registerMaterial )
	{
		outMaterialTypeNr = -1;

		if ( Program == 0 && !createProgram() )
			return false;

		if ( vertexShaderProgram )
			if ( !createShader( GL_VERTEX_SHADER, vertexShaderProgram, "" ) )
				return false;

		if ( pixelShaderProgram )
			if ( !createShader( GL_FRAGMENT_SHADER, pixelShaderProgram, "" ) )
				return false;

		if ( !linkProgram() )
			return false;

		// register myself as new material
		if ( registerMaterial )
			outMaterialTypeNr = Driver->addMaterialRenderer( this );
		return true;
	}
开发者ID:codetiger,项目名称:IrrNacl,代码行数:26,代码来源:COGLES2SLMaterialRenderer.cpp

示例10: main

void QEglFSCursor::createShaderPrograms()
{
    static const char *textureVertexProgram =
        "attribute highp vec2 vertexCoordEntry;\n"
        "attribute highp vec2 textureCoordEntry;\n"
        "varying highp vec2 textureCoord;\n"
        "void main() {\n"
        "   textureCoord = textureCoordEntry;\n"
        "   gl_Position = vec4(vertexCoordEntry, 1.0, 1.0);\n"
        "}\n";

    static const char *textureFragmentProgram =
        "uniform sampler2D texture;\n"
        "varying highp vec2 textureCoord;\n"
        "void main() {\n"
        "   gl_FragColor = texture2D(texture, textureCoord).bgra;\n"
        "}\n";

    GLuint vertexShader = createShader(GL_VERTEX_SHADER, textureVertexProgram);
    GLuint fragmentShader = createShader(GL_FRAGMENT_SHADER, textureFragmentProgram);
    m_program = createProgram(vertexShader, fragmentShader);
    glDeleteShader(vertexShader);
    glDeleteShader(fragmentShader);

    m_vertexCoordEntry = glGetAttribLocation(m_program, "vertexCoordEntry");
    m_textureCoordEntry = glGetAttribLocation(m_program, "textureCoordEntry");
    m_textureEntry = glGetUniformLocation(m_program, "texture");
}
开发者ID:FlavioFalcao,项目名称:qt5,代码行数:28,代码来源:qeglfscursor.cpp

示例11: loadShader

/**
 * Compile the shader from file 'filename', with error handling
 */
int Shader::loadShader(string fileName){
	GLint link_ok = GL_FALSE;
	GLuint vs, fs;

	string vsName = fileName+".v.glsl";
	string fsName = fileName+".f.glsl";

	if ((vs = createShader(vsName.c_str(), GL_VERTEX_SHADER))   == 0) return 0;
	if ((fs = createShader(fsName.c_str(), GL_FRAGMENT_SHADER)) == 0) return 0;
	program = glCreateProgram();
	glAttachShader(program, vs);
	glAttachShader(program, fs);
	glLinkProgram(program);

	glGetProgramiv(program, GL_LINK_STATUS, &link_ok);
	if (!link_ok) {
		logWar("glLinkProgram:");
		printShaderLog(program);
        glDeleteShader(vs);
        glDeleteShader(fs);
		return -1;
	}
    glDeleteShader(vs);
    glDeleteShader(fs);
	loadVars();
    return 0;
}
开发者ID:greatelk,项目名称:ThinRender,代码行数:30,代码来源:Shader.cpp

示例12: glCreateProgram

bool Cc3dProgram::initWithFile(const string&vertShaderFilePath,const string&fragShaderFilePath){
    m_vertShaderFilePath=vertShaderFilePath;
    m_fragShaderFilePath=fragShaderFilePath;
    //create shader
    vector<string> _vertShaderFileName=splitStrInTwoByLastDot(vertShaderFilePath);
    vector<string> _fragShaderFileName=splitStrInTwoByLastDot(fragShaderFilePath);
    //创建Program
    GLuint vertShader=createShader(_vertShaderFileName[0].c_str(), _vertShaderFileName[1].c_str());
    GLuint fragShader=createShader(_fragShaderFileName[0].c_str(), _fragShaderFileName[1].c_str());
    //Calls glCreateProgram, glAttachShader, and glLinkProgram to link the vertex and fragment shaders into a complete program.
    GLuint programHandle = glCreateProgram();
    glAttachShader(programHandle, vertShader);
    glAttachShader(programHandle, fragShader);
    
    //needs to be done prior to linking
    {
        glBindAttribLocation(programHandle, ATTRIB_LOC_position_local, "position_local");
        glBindAttribLocation(programHandle, ATTRIB_LOC_texCoord, "texCoordIn");
        glBindAttribLocation(programHandle, ATTRIB_LOC_normal_local, "normal_local");
    }
    glLinkProgram(programHandle);//link过以后,通过glGet**Location得到的索引就是固定的了
    //check and see if there were any link errors
    GLint linkSuccess;
    glGetProgramiv(programHandle, GL_LINK_STATUS, &linkSuccess);
    if (linkSuccess == GL_FALSE) {
        GLchar messages[1024];
        glGetProgramInfoLog(programHandle, sizeof(messages), 0, &messages[0]);
        C3DASSERT(false,messages);
    }
    m_program=programHandle;
    return true;
}
开发者ID:xiaoyanit,项目名称:superSingleCell-c3dEngine,代码行数:32,代码来源:c3dProgram.cpp

示例13: deleteShader

	GLuint Shader::reload(void)
	{
		// Loesche den Shader Code aus dem Grafikspeicher und weise allen IDs den Wert 0 zu:
		deleteShader();
		m_VertexShader   = 0;
		m_FragmentShader = 0;
		m_ShaderProgram  = 0;

		// Create vertex shader
		m_VertexShader = createShader( GL_VERTEX_SHADER, m_VertexShaderFilename.c_str() );
		if(m_VertexShader == 0)
		{
			return 0;
		}
		
		// Create fragment shader
		m_FragmentShader = createShader( GL_FRAGMENT_SHADER, m_FragmentShaderFilename.c_str() );
		if(m_FragmentShader == 0)
		{
			return 0;
		}

		// Generate shader program
		m_ShaderProgram = createShaderProgram( m_VertexShader, m_FragmentShader );
		if(m_ShaderProgram == 0)
		{
			return 0;
		}

		// No errors
		return 1;
	}
开发者ID:rawern,项目名称:DirectLook,代码行数:32,代码来源:Shader.cpp

示例14: createShader

	GLuint Shader::compile(void)
	{
		// Generate vertex shader
		m_VertexShader = createShader( GL_VERTEX_SHADER, m_VertexShaderFilename.c_str() );
		if(m_VertexShader == 0)
		{
			return 0;
		}
		
		// Generate fragment shader
		m_FragmentShader = createShader( GL_FRAGMENT_SHADER, m_FragmentShaderFilename.c_str() );
		if(m_FragmentShader == 0)
		{
			return 0;
		}

		// Generate shader program
		m_ShaderProgram = createShaderProgram( m_VertexShader, m_FragmentShader );
		if(m_ShaderProgram == 0)
		{
			return 0;
		}

		// No errors
		return 1;
	}
开发者ID:rawern,项目名称:DirectLook,代码行数:26,代码来源:Shader.cpp

示例15: glewInit

void Render::initialize(const std::string &frag, const std::string &vert, int numOfRects)
{
   initialized = true;
   GLenum err = glewInit();

      if (GLEW_OK != err)
      {
         std::cout<<boost::format("Glew error: %s\n") % glewGetErrorString(err);
         exit(1);
      }

      std::cout<<boost::format("Status: Using GLEW %s\n") % glewGetString(GLEW_VERSION);
   
      GLuint vertShader = createShader(vert, GL_VERTEX_SHADER);
   GLuint fragShader = createShader(frag, GL_FRAGMENT_SHADER);
   program = createProgram(vertShader,fragShader);

   glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
   glEnable(GL_BLEND);


   createAndBindBuffers(numOfRects);
   activateProgram(program);
   bindTexture();
}
开发者ID:Lalaland,项目名称:GLUtil-old-,代码行数:25,代码来源:render.cpp


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