本文整理汇总了C++中OpenGLTexture类的典型用法代码示例。如果您正苦于以下问题:C++ OpenGLTexture类的具体用法?C++ OpenGLTexture怎么用?C++ OpenGLTexture使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了OpenGLTexture类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: bindFrameBufferTexture
void OpenGLRenderer::bindFrameBufferTexture(Texture *texture) {
if(!texture)
return;
OpenGLTexture *glTexture = (OpenGLTexture*)texture;
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, glTexture->getFrameBufferID());
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
示例2: createTexture
/*************************************************************************
Create a new Texture object and load a file into it.
*************************************************************************/
Texture* OpenGLRenderer::createTexture(const String& filename, const String& resourceGroup)
{
OpenGLTexture* tex = (OpenGLTexture*)createTexture();
tex->loadFromFile(filename, resourceGroup);
return tex;
}
示例3: glDisable
void OpenGLGraphics::SetPixel ( Uint32 _surfaceID, int x, int y, Uint32 _color )
{
if ( _surfaceID == SCREEN_SURFACE_ID )
{
g_openGL->VertexArrayStatePrimitive ();
g_openGL->DeactivateTextureRect ();
glDisable ( GL_BLEND );
ASSERT_OPENGL_ERRORS;
#ifndef TARGET_OS_WINDOWS
m_vertexArray[0] = x;
m_vertexArray[1] = y;
_color |= FULL_ALPHA;
g_openGL->ActivateColour ( _color );
glDrawArrays ( GL_POINTS, 0, 1 );
#else
glRasterPos2i ( x, y );
ASSERT_OPENGL_ERRORS;
glDrawPixels ( 1, 1, GL_RGBA, GL_UNSIGNED_INT, &_color );
ASSERT_OPENGL_ERRORS;
#endif
glEnable ( GL_BLEND );
ASSERT_OPENGL_ERRORS;
}
else
{
ARCReleaseAssert ( m_textures.valid ( _surfaceID ) );
OpenGLTexture *tex = m_textures.get ( _surfaceID );
tex->SetPixel ( x, y, _color );
tex->Damage();
}
}
示例4: OpenGLTexture
Uint32 OpenGLGraphics::CreateSurface ( Uint32 _width, Uint32 _height, bool _isColorKeyed )
{
OpenGLTexture *tex = new OpenGLTexture();
tex->Create ( _width, _height, _isColorKeyed );
Uint32 ret = m_textures.insert ( tex );
return ret;
}
示例5: bindFrameBufferTexture
void OpenGLRenderer::bindFrameBufferTexture(Texture *texture) {
if(currentFrameBufferTexture) {
previousFrameBufferTexture = currentFrameBufferTexture;
}
OpenGLTexture *glTexture = (OpenGLTexture*)texture;
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, glTexture->getFrameBufferID());
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
currentFrameBufferTexture = texture;
}
示例6: ARCReleaseAssert
int OpenGLGraphics::FillRect ( Uint32 _surfaceID, SDL_Rect *_destRect, Uint32 _color )
{
ARCReleaseAssert ( m_sdlScreen != NULL );
if ( _color == m_colorKey )
_color = m_colorKey & ZERO_ALPHA;
if (_surfaceID == SCREEN_SURFACE_ID)
{
// fill a rectangle on screen
g_openGL->ActivateColour ( _color );
g_openGL->DeactivateTextureRect ();
g_openGL->VertexArrayStatePrimitive ();
if ( _destRect )
{
m_vertexArray[0] = _destRect->x;
m_vertexArray[1] = _destRect->y;
m_vertexArray[2] = _destRect->x + _destRect->w;
m_vertexArray[3] = _destRect->y;
m_vertexArray[4] = _destRect->x;
m_vertexArray[5] = _destRect->y + _destRect->h;
m_vertexArray[6] = _destRect->x + _destRect->w;
m_vertexArray[7] = _destRect->y + _destRect->h;
} else {
m_vertexArray[0] = 0;
m_vertexArray[1] = 0;
m_vertexArray[2] = m_sdlScreen->m_sdlSurface->w;
m_vertexArray[3] = 0;
m_vertexArray[4] = 0;
m_vertexArray[5] = m_sdlScreen->m_sdlSurface->h;
m_vertexArray[6] = m_sdlScreen->m_sdlSurface->w;
m_vertexArray[7] = m_sdlScreen->m_sdlSurface->h;
}
glDrawArrays ( GL_TRIANGLE_STRIP, 0, 4 );
ASSERT_OPENGL_ERRORS;
return 0;
}
else
{
ARCReleaseAssert ( m_textures.valid ( _surfaceID ) );
OpenGLTexture *tex = m_textures.get ( _surfaceID );
ARCReleaseAssert ( tex != NULL );
int r = SDL_FillRect ( tex->m_sdlSurface, _destRect, _color );
tex->Damage ();
return r;
}
}
示例7: glReadBuffer
Image *OpenGLRenderer::renderBufferToImage(Texture *texture) {
OpenGLTexture *glTexture = (OpenGLTexture*)texture;
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, glTexture->getFrameBufferID());
glReadBuffer(GL_COLOR_ATTACHMENT0_EXT);
char *imageBuffer = (char*)malloc(texture->getWidth() * backingResolutionScaleX * texture->getHeight() * backingResolutionScaleY * 4);
glReadPixels(0, 0, texture->getWidth() * backingResolutionScaleX, texture->getHeight() * backingResolutionScaleY, GL_RGBA, GL_UNSIGNED_BYTE, imageBuffer);
Image *retImage = new Image(imageBuffer, texture->getWidth() * backingResolutionScaleX, texture->getHeight() * backingResolutionScaleY, Image::IMAGE_RGBA);
free(imageBuffer);
unbindFramebuffers();
return retImage;
}
示例8: glMatrixMode
void OpenGLGraphics::render_overlay(CoreOverlay* overlay) {
if (!overlay->visible()) {
return;
}
float x = overlay->corner_x();
float y = overlay->corner_y();
// Now translate to the top-left corner of the overlay, and render
// the text and background image
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glTranslatef(x, y, 0.0f);
// Render the background as a single quad
OpenGLTexture* background = static_cast<OpenGLTexture*>(overlay->background());
if (background) {
background->sampler(0);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f);
glVertex2f(0.0f, 0.0f);
glTexCoord2f(1.0f, 0.0f);
glVertex2f(overlay->width(), 0.0f);
glTexCoord2f(1.0f, 1.0f);
glVertex2f(overlay->width(), overlay->height());
glTexCoord2f(0.0f, 1.0f);
glVertex2f(0.0f, overlay->height());
glEnd();
}
// Now render the text
OpenGLFont* font = static_cast<OpenGLFont*>(overlay->font());
if (!overlay->text().empty() && font) {
glColor4fv(overlay->text_color());
glPushMatrix();
glTranslatef(0, (float)font->height(), 0);
font->render(overlay->text());
glPopMatrix();
}
// Render all the children
for (Iterator<CoreOverlayPtr> i = overlay->children(); i; i++) {
render_overlay(i->get());
}
glPopMatrix();
}
示例9: constructTexture
void PreparePresentationPassPrivate::constructTexture(OpenGLTexture &t, OpenGLInternalFormat f, int width, int height)
{
t.create(OpenGLTexture::Texture2D);
t.bind();
t.setInternalFormat(f);
t.setWrapMode(OpenGLTexture::DirectionS, OpenGLTexture::ClampToEdge);
t.setWrapMode(OpenGLTexture::DirectionT, OpenGLTexture::ClampToEdge);
t.setFilter(OpenGLTexture::Magnification, OpenGLTexture::Nearest);
t.setFilter(OpenGLTexture::Minification, OpenGLTexture::Nearest);
t.setSize(width, height);
t.allocate();
t.release();
}
示例10: glDisable
void OpenGLGraphics::render_visible_quad_sets() {
OpenGLTexture* texture = 0;
glDisable(GL_LIGHTING);
glDisable(GL_CULL_FACE);
glEnable(GL_BLEND);
glEnable(GL_TEXTURE_2D);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glColor3f(1.0f, 1.0f, 1.0f);
// Render all quad sets
for (vector<CoreQuadSetPtr>::iterator i = quad_sets_.begin(); i != quad_sets_.end(); i++) {
// Switch textures if necessary
CoreQuadSet* quad_set = i->get();
OpenGLTexture* next_texture = static_cast<OpenGLTexture*>(quad_set->texture());
if (texture != next_texture) {
texture = next_texture;
texture->sampler(TS_DIFFUSE);
}
// Transform the modelview an dtexture matrics
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glMultMatrixf(quad_set->parent()->matrix());
glBegin(GL_QUADS);
for (size_t i = 0; i < quad_set->vertex_count(); i++) {
const Vertex& v = quad_set->vertex_data()[i];
glNormal3fv(v.normal);
glTexCoord2fv(v.texcoord);
glVertex3fv(v.position);
}
glEnd();
// Set the matrix mode
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
}
glEnable(GL_LIGHTING);
glEnable(GL_CULL_FACE);
glDisable(GL_TEXTURE_2D);
glDisable(GL_BLEND);
}
示例11: glActiveTexture
void OpenGLRenderer::setTexture(Texture *texture) {
if(texture == NULL) {
glActiveTexture(GL_TEXTURE0);
glDisable(GL_TEXTURE_2D);
return;
}
glActiveTexture(GL_TEXTURE0);
glEnable (GL_TEXTURE_2D);
if(currentTexture != texture) {
OpenGLTexture *glTexture = (OpenGLTexture*)texture;
glBindTexture (GL_TEXTURE_2D, glTexture->getTextureID());
}
currentTexture = texture;
}
示例12: MYGUI_PLATFORM_ASSERT
void OpenGLRenderManager::doRender(IVertexBuffer* _buffer, ITexture* _texture, size_t _count)
{
OpenGLVertexBuffer* buffer = static_cast<OpenGLVertexBuffer*>(_buffer);
unsigned int buffer_id = buffer->getBufferID();
MYGUI_PLATFORM_ASSERT(buffer_id, "Vertex buffer is not created");
unsigned int texture_id = 0;
if (_texture)
{
OpenGLTexture* texture = static_cast<OpenGLTexture*>(_texture);
texture_id = texture->getTextureID();
//MYGUI_PLATFORM_ASSERT(texture_id, "Texture is not created");
}
glBindTexture(GL_TEXTURE_2D, texture_id);
glBindBuffer(GL_ARRAY_BUFFER, buffer_id);
// enable vertex arrays
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
// before draw, specify vertex and index arrays with their offsets
size_t offset = 0;
glVertexPointer(3, GL_FLOAT, sizeof(Vertex), (void*)offset);
offset += (sizeof(float) * 3);
glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(Vertex), (void*)offset);
offset += (4);
glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), (void*)offset);
glDrawArrays(GL_TRIANGLES, 0, _count);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindTexture(GL_TEXTURE_2D, 0);
}
示例13: renderToTexture
void OpenGLRenderer::renderToTexture(Texture *targetTexture) {
OpenGLTexture *glTexture = (OpenGLTexture*)targetTexture;
glBindTexture (GL_TEXTURE_2D, glTexture->getTextureID());
glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, targetTexture->getWidth(), targetTexture->getHeight(), 0);
}
示例14: glGenFramebuffersEXT
void OpenGLRenderer::createRenderTextures(Texture **colorBuffer, Texture **depthBuffer, int width, int height, bool floatingPointBuffer) {
GLuint depthTexture,colorTexture;
GLenum status;
GLuint frameBufferID;
glGenFramebuffersEXT(1, &frameBufferID);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, frameBufferID);
glGenTextures(1,&colorTexture);
glBindTexture(GL_TEXTURE_2D,colorTexture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
if(floatingPointBuffer) {
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F_ARB, width, height, 0, GL_RGBA, GL_FLOAT, NULL);
} else {
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
}
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, colorTexture, 0);
status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
if(status == GL_FRAMEBUFFER_COMPLETE_EXT) {
Logger::log("color fbo generation successful\n");
} else {
Logger::log("color fbo generation failed\n");
}
if(colorBuffer) {
OpenGLTexture *colorBufferTexture = new OpenGLTexture(width, height);
colorBufferTexture->setGLInfo(colorTexture, frameBufferID);
*colorBuffer = ((Texture*)colorBufferTexture);
}
if(depthBuffer) {
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, frameBufferID);
glGenTextures(1,&depthTexture);
glBindTexture(GL_TEXTURE_2D,depthTexture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE,GL_COMPARE_R_TO_TEXTURE);
// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL);
glTexParameteri(GL_TEXTURE_2D, GL_DEPTH_TEXTURE_MODE, GL_LUMINANCE);
if(floatingPointBuffer) {
glTexImage2D(GL_TEXTURE_2D,0,GL_DEPTH_COMPONENT16,width,height,0,GL_DEPTH_COMPONENT,GL_FLOAT,0);
} else {
glTexImage2D(GL_TEXTURE_2D,0,GL_DEPTH_COMPONENT,width,height,0,GL_DEPTH_COMPONENT,GL_UNSIGNED_BYTE,0);
}
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_TEXTURE_2D, depthTexture, 0);
status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
if(status == GL_FRAMEBUFFER_COMPLETE_EXT) {
Logger::log("depth fbo generation successful\n");
} else {
Logger::log("depth fbo generation failed\n");
}
OpenGLTexture *depthBufferTexture = new OpenGLTexture(width, height);
depthBufferTexture->setGLInfo(depthTexture, frameBufferID);
*depthBuffer = ((Texture*)depthBufferTexture);
}
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
}
示例15: GetPixel
Uint32 OpenGLGraphics::GetPixel ( Uint32 _surfaceID, int x, int y )
{
OpenGLTexture *tex = m_textures.get ( _surfaceID );
return tex->GetPixel ( x, y );
}