本文整理汇总了C++中checkGlError函数的典型用法代码示例。如果您正苦于以下问题:C++ checkGlError函数的具体用法?C++ checkGlError怎么用?C++ checkGlError使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了checkGlError函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: Java_com_ti_omap4_android_camera_panorama_MosaicRenderer_transferGPUtoCPU
JNIEXPORT void JNICALL Java_com_ti_omap4_android_camera_panorama_MosaicRenderer_transferGPUtoCPU(
JNIEnv * env, jobject obj)
{
double t0, t1, time_c;
gYVURenderer[LR].DrawTexture();
gYVURenderer[HR].DrawTexture();
sem_wait(&gPreviewImage_semaphore);
// Bind to the input LR FBO and read the Low-Res data from there...
glBindFramebuffer(GL_FRAMEBUFFER, gBufferInputYVU[LR].GetFrameBufferName());
t0 = now_ms();
glReadPixels(0,
0,
gBufferInput[LR].GetWidth(),
gBufferInput[LR].GetHeight(),
GL_RGBA,
GL_UNSIGNED_BYTE,
gPreviewImage[LR]);
checkGlError("glReadPixels LR");
// Bind to the input HR FBO and read the high-res data from there...
glBindFramebuffer(GL_FRAMEBUFFER, gBufferInputYVU[HR].GetFrameBufferName());
t0 = now_ms();
glReadPixels(0,
0,
gBufferInput[HR].GetWidth(),
gBufferInput[HR].GetHeight(),
GL_RGBA,
GL_UNSIGNED_BYTE,
gPreviewImage[HR]);
checkGlError("glReadPixels HR");
sem_post(&gPreviewImage_semaphore);
}
开发者ID:qqedfr,项目名称:kitkat-2,代码行数:37,代码来源:mosaic_renderer_jni.cpp
示例2: createProgram
GLuint createProgram(const char* pVertexSource, const char* pFragmentSource) {
GLuint vertexShader = loadShader(GL_VERTEX_SHADER, pVertexSource);
if (!vertexShader) {
return 0;
}
GLuint pixelShader = loadShader(GL_FRAGMENT_SHADER, pFragmentSource);
if (!pixelShader) {
return 0;
}
GLuint program = glCreateProgram();
if (program) {
glAttachShader(program, vertexShader);
checkGlError("glAttachShader");
glAttachShader(program, pixelShader);
checkGlError("glAttachShader");
glLinkProgram(program);
GLint linkStatus = GL_FALSE;
glGetProgramiv(program, GL_LINK_STATUS, &linkStatus);
if (linkStatus != GL_TRUE) {
GLint bufLength = 0;
glGetProgramiv(program, GL_INFO_LOG_LENGTH, &bufLength);
if (bufLength) {
char* buf = (char*) malloc(bufLength);
if (buf) {
glGetProgramInfoLog(program, bufLength, NULL, buf);
ALOGE("Could not link program:\n%s\n", buf);
free(buf);
}
}
glDeleteProgram(program);
program = 0;
}
}
return program;
}
开发者ID:MIPS,项目名称:frameworks-native,代码行数:37,代码来源:gl_code.cpp
示例3: createProgram
GLuint createProgram(std::string pVertexSource, std::string pFragmentSource) {
GLuint vertexShader = loadShader(GL_VERTEX_SHADER, pVertexSource.c_str());
if (!vertexShader) {
return 0;
}
GLuint pixelShader = loadShader(GL_FRAGMENT_SHADER, pFragmentSource.c_str());
if (!pixelShader) {
return 0;
}
GLuint program = glCreateProgram();
if (program) {
glAttachShader(program, vertexShader);
checkGlError("glAttachShader");
glAttachShader(program, pixelShader);
checkGlError("glAttachShader");
glLinkProgram(program);
GLint linkStatus = GL_FALSE;
glGetProgramiv(program, GL_LINK_STATUS, &linkStatus);
if (linkStatus != GL_TRUE) {
GLint bufLength = 0;
glGetProgramiv(program, GL_INFO_LOG_LENGTH, &bufLength);
if (bufLength) {
char *buf = new char[bufLength];
if (buf) {
glGetProgramInfoLog(program, bufLength, 0, buf);
debug_print("Could not link program:\n%s\n", buf);
delete buf;
}
}
glDeleteProgram(program);
program = 0;
}
}
return program;
}
开发者ID:mls-m5,项目名称:sdl2-makefile-project,代码行数:37,代码来源:shaderprogram.cpp
示例4: setupHandles
void setupHandles(){
gMVP = glGetUniformLocation(gProgram, "modelViewMatrix");
gModelMatrix = glGetUniformLocation(gProgram, "ModelMatrix");
gNomralMatrix = glGetUniformLocation(gProgram, "NomralMatrix");
gS_Texture = glGetUniformLocation(gProgram, "s_texture");
gLightSource = glGetUniformLocation(gProgram, "lightSource");
gEye = glGetUniformLocation(gProgram, "eye");
// gLightsCount = glGetUniformLocation(gProgram, "lightsCount");
// fLightsCount = glGetUniformLocation(gProgram, "fragLightsCount");
gvPositionHandle = glGetAttribLocation(gProgram, "vPosition");
gvNormal = glGetAttribLocation(gProgram, "vNormal");
gvTexture = glGetAttribLocation(gProgram, "vTexture");
checkGlError("glGetAttribLocation");
}
开发者ID:ntkachov,项目名称:ElectraEngine,代码行数:15,代码来源:gl_code.cpp
示例5: glUseProgram
void GLES2Lesson::prepareShaderProgram() {
glUseProgram(gProgram);
checkGlError("glUseProgram");
glUniform1i(samplerUniformPosition, twinkling ? 1 : 0);
glActiveTexture(GL_TEXTURE0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glActiveTexture(GL_TEXTURE1);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
}
开发者ID:TheFakeMontyOnTheRun,项目名称:nehe-ndk-gles20,代码行数:15,代码来源:GLES2Lesson.cpp
示例6: useProgram
void VertexArrayObject::bind() const {
useProgram();
switch (vaoSupported_) {
case VaoSupported::CHECK_SUPPORTED:
if (mw::Window::getOpenGlMajorVersion() >= 3) {
vaoSupported_ = VaoSupported::SUPPORTED;
// Fall trough to next case.
} else {
vaoSupported_ = VaoSupported::NOT_SUPPORTED;
bindBuffer();
setVertexAttribPointer();
break;
}
case VaoSupported::SUPPORTED:
if (*vao_ == 0) { // Create the vertex array only the first time.
glGenVertexArrays(1, &*vao_);
glBindVertexArray(*vao_);
checkGlError();
// Remove the block to unneeded calls to buffer changes.
VertexBufferObject::setIgnoreCurrentBind(true);
bindBuffer();
// Restore the block.
VertexBufferObject::setIgnoreCurrentBind(false);
currentVertexArrayObject = *vao_;
setVertexAttribPointer();
} else {
glBindVertexArray(*vao_);
checkGlError();
}
break;
case VaoSupported::NOT_SUPPORTED:
bindBuffer();
setVertexAttribPointer();
break;
}
}
开发者ID:mwthinker,项目名称:MwLibrary2,代码行数:36,代码来源:vertexarrayobject.cpp
示例7: glBindBuffer
int32_t TerrainSimRenderer::render(GLuint posXYHandle, GLuint normalHeightHandle)
{
glBindBuffer(GL_ARRAY_BUFFER, m_positionXZVBO);
glVertexAttribPointer(posXYHandle, 2, GL_FLOAT, GL_FALSE, 0, 0);
glBindBuffer(GL_ARRAY_BUFFER, m_NormalsAndHeightsVBO);
glVertexAttribPointer(normalHeightHandle, 4, GL_FLOAT, GL_FALSE, 0, 0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
checkGlError("glBindBuffer vertices", "TerrainSimRenderer::render()");
glEnableVertexAttribArray(posXYHandle);
glEnableVertexAttribArray(normalHeightHandle);
checkGlError("attrs bound", "TerrainSimRenderer::render()");
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_IBO);
checkGlError("glBindBuffer IBO", "TerrainSimRenderer::render()");
glDrawElements(GL_TRIANGLES, m_indexCount, GL_UNSIGNED_SHORT, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
glDisableVertexAttribArray(posXYHandle);
glDisableVertexAttribArray(normalHeightHandle);
return m_indexCount;
}
开发者ID:BitRussell,项目名称:OpenGLSamples,代码行数:24,代码来源:TerrainSimRenderer.cpp
示例8: gles2_init
void gles2_init()
{
dt_lock (&mutex);
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
checkGlError("glClearColor");
memset(&gl_ctx,0,sizeof(gles2_ctx_t));
gl_ctx.simpleProgram = buildProgram(VERTEX_SHADER, FRAG_SHADER);
glUseProgram(gl_ctx.simpleProgram);
glGenTextures(1, &gl_ctx.g_texYId);
glGenTextures(1, &gl_ctx.g_texUId);
glGenTextures(1, &gl_ctx.g_texVId);
checkGlError("glGenTextures");
char *glExtension = (char *)glGetString(GL_EXTENSIONS);
if(strstr(glExtension, "GL_AMD_compressed_ATC_texture") != NULL)
gl_ctx.vertex_index = 1;
else
gl_ctx.vertex_index = 0;
gl_ctx.initialized = 1;
dt_unlock (&mutex);
__android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, "opengl esv2 init ok, ext:%s\n ", glExtension);
}
开发者ID:mic101,项目名称:dttv-android,代码行数:24,代码来源:android_opengl.cpp
示例9: CreateGLProgram
GLuint CreateGLProgram(const char * vShader, const char * fShader){
GLuint vertexShader = LoadShader(GL_VERTEX_SHADER, vShader);
GLuint pixelShader = LoadShader(GL_FRAGMENT_SHADER, fShader);
GLuint program = glCreateProgram();
if(!program){
LOGI(" Problems with ProgramObject");
return 0;
}
glAttachShader(program, vertexShader ); checkGlError(" glAttachShader: VertexShader");
glAttachShader(program, pixelShader ); checkGlError(" glAttachShader: FragmentShader");
glLinkProgram(program); checkGlError(" glLinkProgram");
// Check the link status
GLint linked = GL_FALSE;
glGetProgramiv( program, GL_LINK_STATUS, &linked );
if (linked != GL_TRUE) {
GLint bufLength = 0;
glGetProgramiv(program, GL_INFO_LOG_LENGTH, &bufLength);
if(bufLength) {
char* buf = (char*) malloc(bufLength);
if (buf) {
glGetProgramInfoLog(program, bufLength, NULL, buf);
LOGE("Could not link program:\n%s\n", buf);
free(buf);
}
}
glDeleteProgram(program);
program = 0;
}
return program;
}
开发者ID:Ramon-Wong,项目名称:NDK-Activity-OpenglES2.0,代码行数:36,代码来源:Utils.c
示例10: buildProgram
static GLuint buildProgram(const char* vertexShaderSource,
const char* fragmentShaderSource)
{
GLuint vertexShader = buildShader(vertexShaderSource, GL_VERTEX_SHADER);
GLuint fragmentShader = buildShader(fragmentShaderSource, GL_FRAGMENT_SHADER);
GLuint programHandle = glCreateProgram();
if (programHandle)
{
glAttachShader(programHandle, vertexShader);
checkGlError("glAttachShader");
glAttachShader(programHandle, fragmentShader);
checkGlError("glAttachShader");
glLinkProgram(programHandle);
GLint linkStatus = GL_FALSE;
glGetProgramiv(programHandle, GL_LINK_STATUS, &linkStatus);
if (linkStatus != GL_TRUE) {
GLint bufLength = 0;
glGetProgramiv(programHandle, GL_INFO_LOG_LENGTH, &bufLength);
if (bufLength) {
char* buf = (char*) malloc(bufLength);
if (buf) {
glGetProgramInfoLog(programHandle, bufLength, NULL, buf);
__android_log_print(ANDROID_LOG_DEBUG, LOG_TAG," error: Could not link programe: %s\n", buf);
free(buf);
}
}
glDeleteProgram(programHandle);
programHandle = 0;
}
}
return programHandle;
}
开发者ID:mic101,项目名称:dttv-android,代码行数:36,代码来源:android_opengl.cpp
示例11: clearBuffers
void GLES2Lesson::render() {
clearBuffers();
prepareShaderProgram();
setPerspective();
resetTransformMatrices();
glUniformMatrix4fv(modelMatrixAttributePosition, 1, false, &glm::mat4(1.0f)[0][0]);
checkGlError("before drawing");
glEnableVertexAttribArray(vertexAttributePosition);
glEnableVertexAttribArray(textureCoordinatesAttributePosition);
for (auto &pair : mBatches) {
glBindTexture(GL_TEXTURE_2D, pair.first);
pair.second->draw(vertexAttributePosition, textureCoordinatesAttributePosition);
}
glDisableVertexAttribArray(vertexAttributePosition);
glDisableVertexAttribArray(textureCoordinatesAttributePosition);
checkGlError("after drawing");
}
开发者ID:TheFakeMontyOnTheRun,项目名称:nehe-ndk-gles20,代码行数:24,代码来源:GLES2Lesson.cpp
示例12: initShader
// Create a shader program
int
ShaderUtils::createProgramFromBuffer(const char* pszVertexSource, const char* pszFragmentSource)
{
GLuint program = 0;
GLuint vertexShader = initShader(GL_VERTEX_SHADER, pszVertexSource);
GLuint fragmentShader = initShader(GL_FRAGMENT_SHADER, pszFragmentSource);
if (vertexShader && fragmentShader) {
program = glCreateProgram();
if (program) {
glAttachShader(program, vertexShader);
checkGlError("glAttachShader");
glAttachShader(program, fragmentShader);
checkGlError("glAttachShader");
glLinkProgram(program);
GLint linkStatus;
glGetProgramiv(program, GL_LINK_STATUS, &linkStatus);
if (!GL_TRUE == linkStatus) {
GLint infoLen = 0;
glGetProgramiv(program, GL_INFO_LOG_LENGTH, &infoLen);
if (infoLen) {
char* buf = new char[infoLen];
glGetProgramInfoLog(program, infoLen, NULL, buf);
printf("Could not link program %d: %s\n", program, buf);
delete[] buf;
}
}
}
}
return program;
}
开发者ID:galexcode,项目名称:AR_Image_Recognition-sample-ios,代码行数:37,代码来源:ShaderUtils.cpp
示例13: setupGraphics
bool setupGraphics(struct android_app* state) {
const EGLint attribs[] = { EGL_SURFACE_TYPE, EGL_WINDOW_BIT, EGL_BLUE_SIZE,
8, EGL_GREEN_SIZE, 8, EGL_RED_SIZE, 8, EGL_NONE };
EGLint contextAttrs[] = { EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE };
EGLint w, h, dummy, format;
EGLint numConfigs;
EGLConfig config;
EGLContext context;
display = eglGetDisplay(EGL_DEFAULT_DISPLAY );
eglInitialize(display, 0, 0);
defaultEGLChooser(display, config);
//eglChooseConfig(display, attribs, &config, 1, &numConfigs);
eglGetConfigAttrib(display, config, EGL_NATIVE_VISUAL_ID, &format);
context = eglCreateContext(display, config, NULL, contextAttrs);
ANativeWindow_setBuffersGeometry(state->window, 0, 0, format);
surface = eglCreateWindowSurface(display, config, state->window, NULL);
if (eglMakeCurrent(display, surface, surface, context) == EGL_FALSE) {
LOGW("Unable to eglMakeCurrent");
return -1;
}
eglQuerySurface(display, surface, EGL_WIDTH, &w);
eglQuerySurface(display, surface, EGL_HEIGHT, &h);
printGLString("Version", GL_VERSION);
printGLString("Vendor", GL_VENDOR);
printGLString("Renderer", GL_RENDERER);
printGLString("Extensions", GL_EXTENSIONS);
LOGI("setupGraphics(%d, %d)", w, h);
render->SetPivotPoint(w * 0.5f, h * 0.5f);
std::string resourcePath("/sdcard");
render->SetResourcePath(resourcePath);
render->Initialize(w, h);
checkGlError("glViewport");
return true;
}
开发者ID:ikryukov,项目名称:ShadowsAndroid,代码行数:48,代码来源:Shadows.cpp
示例14: LOGD
bool App::setupGraphics(int w, int h) {
this->screenWidth = w;
this->screenHeight = h;
LOGD("App", "width: %d, height: %d", w, h);
printGLString("Version", GL_VERSION);
printGLString("Vendor", GL_VENDOR);
printGLString("Renderer", GL_RENDERER);
printGLString("Extensions", GL_EXTENSIONS);
LOGI("App", "setupGraphics(%d, %d)", w, h);
Director::shared->start();
glViewport(0, 0, w, h);
checkGlError("glViewport");
float half_width = (float) w * 0.5f;
float half_height = (float) h * 0.5f;
Director::shared->setMatrixMode(PROJECTION_MATRIX);
Director::shared->loadIdentity();
Director::shared->setPerspective(60.0f,
(float) App::shared->getScreenWidth() / (float) App::shared->getScreenHeight(),
0.01f,
3550.0f,
0.0f);
glDisable(GL_CULL_FACE);
// Director::shared->setOrthoGraphic2D(-half_width,
// half_width,
// -half_height,
// half_height);
Director::shared->translate(-half_width, -half_height, 0.0f);
// vec3 c = {0.0f, 0.0f, 0.0f }; // center
vec3 c = { 0.0f, 0.0f, 0.0f }; // center
vec3 u = { 0.0f, 0.0f, -1.0f }; // up
// vec3 e = { 0.0f, 0.001f, 545.0f }; // eye
vec3 e = { 0.0f, 0.0001f, 2.2566f * w }; // eye
// vec3 c = { App::shared->getScreenWidth() / 2.0f, App::shared->getScreenHeight() / 2.0f, 0.0f }; // center
// vec3 u = { 0.0f, 0.0f, 1.0f }; // up
Director::shared->lookAt(&e, &c, &u);
// glDisable(GL_DEPTH_TEST);
// glDepthMask(GL_FALSE);
isRenderable = 1;
glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
return true;
}
开发者ID:conghd,项目名称:TExample,代码行数:48,代码来源:App.cpp
示例15: checkFramebufferStatus
void checkFramebufferStatus(const char* name) {
GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
if (status == 0) {
LOGE("Checking completeness of Framebuffer:%s", name);
checkGlError("checkFramebufferStatus (is the target \"GL_FRAMEBUFFER\"?)");
} else if (status != GL_FRAMEBUFFER_COMPLETE) {
const char* msg = "not listed";
switch (status) {
case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: msg = "attachment"; break;
case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS: msg = "dimensions"; break;
case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: msg = "missing attachment"; break;
case GL_FRAMEBUFFER_UNSUPPORTED: msg = "unsupported"; break;
}
LOGE("Framebuffer: %s is INCOMPLETE: %s, %x", name, msg, status);
}
}
开发者ID:MWisBest,项目名称:android_external_Focal,代码行数:16,代码来源:mosaic_renderer_jni.cpp
示例16: setupGraphics
bool setupGraphics(int w, int h) {
printGLString("Version", GL_VERSION);
printGLString("Vendor", GL_VENDOR);
printGLString("Renderer", GL_RENDERER);
printGLString("Extensions", GL_EXTENSIONS);
LOGI("setupGraphics(%d, %d)", w, h);
/*gProgram = createProgram(gVertexShader, gFragmentShader);
if (!gProgram) {
LOGE("Could not create program.");
return false;
}
gvPositionHandle = glGetAttribLocation(gProgram, "vPosition");
checkGlError("glGetAttribLocation");
LOGI("glGetAttribLocation(\"vPosition\") = %d\n",
gvPositionHandle);
*/
Effect* effect = Assets::getInstance().CreateEffect("Default");
sprite.SetEffect(effect);
effect->SetSource(Assets::DefaultVertexShader, Assets::DefaultFragmentShader);
effect->CompileAndLink();
//std::vector<unsigned char> image;
unsigned long iw=4;
unsigned long ih;
h=4;
std::vector<unsigned char> image(16*4);
for (int k=0; k< 16; k++)
{
for (int j=0; j< 4; j++)
image[k*4+j] = 0;
image[k*4] = 255;
image[k*4+3] = 255;
}
Texture* texture = Assets::getInstance().CreateTexture("Default");
texture->SetImageBuffer(image, 4, 4);
texture->GPULoad();
sprite.SetTexture(texture);
glViewport(0, 0, w, h);
checkGlError("glViewport");
return true;
}
开发者ID:eysteinn,项目名称:Fuzzy,代码行数:47,代码来源:gl_code.cpp
示例17: checkGlError
bool particleRenderer::init() {
if (!shader.init()) return false;
if (!system.init()) return false;
TEX_PARTICLE_TEXTURE.loadSurface(loadImageFromResource("IDT_PARTICLE_TEXTURE"));
if (shader.bindProgram()) {
shader.setTexSize(0.5f);
shader.setParticleTexture(0);
shader.unbindProgram();
} else {
return false;
}
return checkGlError("Failed to init particle system renderer");
}
开发者ID:salvoilmiosi,项目名称:PinoMaze,代码行数:17,代码来源:renderer_particle.cpp
示例18: display
void display ()
{
/////////////////////////////////////////////////////////
//Color + Matrix setup
glClearColor( 1,1,1,1 );
glClear( GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
Shader *shader = shaderDefault;
shader->use();
Int32 uModelview = shader->program->getUniform( "modelview" );
glUniformMatrix4fv( uModelview, 1, false, (GLfloat*) matModelView.top().m );
Int32 uProjection = shader->program->getUniform( "projection" );
glUniformMatrix4fv( uProjection, 1, false, (GLfloat*) matProjection.top().m );
Int32 uColor = shaderDefault->program->getUniform( "color" );
glUniform4f( uColor, 1.0f, 0.0f, 0.0f, 0.0f );
//////////////////////////////////////////////////////////
//Render
renderQuad( shaderDefault, Vec2(100,100), Vec2(200,200) );
//////////////////////////////////////////////////////////
//FPS
//Add to fps
static int fps = 0;
fps++;
//Check if 1 second elapsed
static int lastUpdate = glutGet( GLUT_ELAPSED_TIME );
int now = glutGet( GLUT_ELAPSED_TIME );
if (now - lastUpdate > 1000)
{
std::cout << "Fps: " << fps << std::endl;
lastUpdate = now;
fps = 0;
}
//Check for errors
checkGlError( "display end" );
glutSwapBuffers();
}
开发者ID:Sudoka,项目名称:RenderBase,代码行数:46,代码来源:rvgMain.cpp
示例19: LOGE
void GlHelper::init() {
gProgram = GlHelper::createProgram(VERTEX_SHADER, FRAG_SHADER);
if (!gProgram) {
LOGE("Could not create program.");
}
this->gPositionHandle = glGetAttribLocation(gProgram, "vPosition");
GlHelper::checkGlError("glGetAttribLocation");
LOG("glGetAttribLocation(\"vPosition\") = %d\n", this->gPositionHandle);
glViewport(0, 0, this->nGlViewWidth, this->nGlViewHeight);
checkGlError("glViewport");
glUseProgram(gProgram);
glGenTextures(1, &gTexYId);
glGenTextures(1, &gTexUId);
glGenTextures(1, &gTexVId);
}
开发者ID:insiva,项目名称:VideoChat,代码行数:17,代码来源:GlHelper.cpp
示例20: createProgram
GLuint createProgram(const char* vtxSrc, const char* fragSrc) {
GLuint vtxShader = 0;
GLuint fragShader = 0;
GLuint program = 0;
GLint linked = GL_FALSE;
vtxShader = createShader(GL_VERTEX_SHADER, vtxSrc);
if (!vtxShader)
goto exit;
fragShader = createShader(GL_FRAGMENT_SHADER, fragSrc);
if (!fragShader)
goto exit;
program = glCreateProgram();
if (!program) {
checkGlError("glCreateProgram");
goto exit;
}
glAttachShader(program, vtxShader);
glAttachShader(program, fragShader);
glLinkProgram(program);
glGetProgramiv(program, GL_LINK_STATUS, &linked);
if (!linked) {
ALOGE("Could not link program");
GLint infoLogLen = 0;
glGetProgramiv(program, GL_INFO_LOG_LENGTH, &infoLogLen);
if (infoLogLen) {
GLchar* infoLog = (GLchar*)malloc(infoLogLen);
if (infoLog) {
glGetProgramInfoLog(program, infoLogLen, NULL, infoLog);
ALOGE("Could not link program:\n%s\n", infoLog);
free(infoLog);
}
}
glDeleteProgram(program);
program = 0;
}
exit:
glDeleteShader(vtxShader);
glDeleteShader(fragShader);
return program;
}
开发者ID:aam,项目名称:compute-gles31,代码行数:45,代码来源:gles3jni.cpp
注:本文中的checkGlError函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论