标签: textures

如何将2个或更多纹理贴图应用于gluSphere OpenGL对象?

我正在编写一个基本的行星查看器OpenGL Perl应用程序,只是为了好玩.我有基本的工作,与辉煌的星球,通过gluSphere()旋转与经典的地球纹理贴图应用.

现在,如果我想通过OpenGL应用第二个纹理贴图(比如"地球云")怎么办?

当然,我可以在PhotoShop或其他一些图形应用程序中自己混合两个纹理贴图,但有没有办法通过OpenGL API?

我尝试加载两个纹理并生成mipmap但是行星显示时只应用了第一个纹理,而不是第二个.

opengl perl textures

4
推荐指数
2
解决办法
2299
查看次数

如何在iPhone上的OpenGL ES中设置/获取纹理上的像素?

我正在尝试谷歌我在标题中提到的,但不知怎的,我找不到它.这不应该那么难,不是吗?

我正在寻找的是一种在iPhone上访问OpenGL ES纹理的方法,以及一种获取/设置像素的方法.我正在寻找什么样的OpenGL ES功能?

iphone textures opengl-es pixel

4
推荐指数
1
解决办法
3802
查看次数

Directx9镜面映射

我如何实现加载纹理以用作几何体的高光贴图并使用C++在Directx9中渲染它?

我可以参考任何教程或基本示例吗?

c++ directx textures specular

4
推荐指数
1
解决办法
619
查看次数

JOGL白色质感?

我正在尝试加载earth.png并将其放在一个三角形上.图像为256x256.我已经按照在线教程进行了几个小时的讨论,但三角形仍然是白色的.任何人都可以指出我正确的方向.

import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.io.InputStream;

import javax.media.opengl.*;
import javax.media.opengl.awt.GLCanvas;

import com.jogamp.opengl.util.texture.Texture;
import com.jogamp.opengl.util.texture.TextureData;
import com.jogamp.opengl.util.texture.TextureIO;

public class test implements GLEventListener {
    private Texture earthTexture;

    public static void main(String[] args) {
        GLProfile glp = GLProfile.getDefault();
        GLCapabilities caps = new GLCapabilities(glp);
        GLCanvas canvas = new GLCanvas(caps);

        final Frame frame = new Frame("AWT Window Test111");
        frame.setSize(700, 700);
        frame.add(canvas);
        frame.setVisible(true);

        // by default, an AWT Frame doesn't do anything when you click
        // the close button; this bit …
Run Code Online (Sandbox Code Playgroud)

java opengl textures jogl

4
推荐指数
1
解决办法
4539
查看次数

在iOS纹理加载上的OpenGL ES - 我如何从RGBA8888 .png文件到RGB565纹理?

所以我正在使用一堆2048x2048的sprite表,这些表很快就能填满内存.我正在使用以下方法(通过Ray Wenderlich)来加载纹理:

- (GLuint)setupTexture:(NSString *)fileName 
{    
    CGImageRef spriteImage = [UIImage imageNamed:fileName].CGImage;
    if (!spriteImage) 
    {
        NSLog(@"Failed to load image %@", fileName);
        exit(1);
    }
    size_t width = CGImageGetWidth(spriteImage);
    size_t height = CGImageGetHeight(spriteImage);
    GLubyte * spriteData = (GLubyte *) calloc(width*height*4, sizeof(GLubyte));
    CGContextRef spriteContext = CGBitmapContextCreate(spriteData, width, height, 8,     width*4,CGImageGetColorSpace(spriteImage), kCGImageAlphaPremultipliedLast);    
    CGContextDrawImage(spriteContext, CGRectMake(0, 0, width, height), spriteImage);
    CGContextRelease(spriteContext);
    GLuint texName;
    glGenTextures(1, &texName);
    glBindTexture(GL_TEXTURE_2D, texName);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, spriteData);
    GLenum err …
Run Code Online (Sandbox Code Playgroud)

textures opengl-es ios

4
推荐指数
1
解决办法
4820
查看次数

在libgdx中纹理灰度

有没有办法将libgdx的纹理转换为灰度图像?到目前为止,我已经复制了我想要灰度的图像并且我手动完成了,但我认为这不是最好的解决方案,因为我的游戏使用的图像越来越多,而且它占用了大量的磁盘空间.

android textures grayscale libgdx

4
推荐指数
2
解决办法
2153
查看次数

我应该垂直翻转加载了stb_image的图像的行以在OpenGL中使用吗?

我正在研究一款支持OpenGL的2d引擎.

我正在使用stb_image加载图像数据,因此我可以创建OpenGL纹理.我知道OpenGL的UV原点是左下角,我也打算在那个空间中为我的屏幕空间2d顶点工作,即我使用的是glm :: ortho(0,width,0,height,-1,1) ),不反转0和高度.

你可能已经猜到了,我的纹理垂直翻转,但我100%确定我的UV指定正确.

那么:这是由stbi_load存储像素数据引起的吗?我目前只加载PNG文件,所以如果我使用其他文件格式,我不知道是否会导致此问题.是吗?(我现在不能测试,我不在家).

我真的想把屏幕坐标保持在"标准"OpenGL空间......我知道我可以反转正交投影来修复它,但我真的不愿意.

我可以看到两个理智的选择:

1-如果这是由像素数据的stbi_load存储引起的,我可以在加载时将其反转.出于性能原因我有点担心,因为我使用纹理数组(glTexture3d)进行精灵动画,这意味着我需要单独反转纹理贴片,这看起来很痛苦,而不是一般的解决方案.

2-我可以使用纹理坐标转换来垂直翻转GPU上的UV(在我的GLSL着色器中).

可能的第三个选项是使用glPixelStore来指定输入数据......但我找不到告诉它输入像素是垂直翻转的方法.

您对处理我的问题有什么建议?我想我不能是唯一一个使用stbi_load + OpenGL并且遇到这个问题的人.

最后,我的目标平台是PC,Android和iOS :)

编辑:我回答了我自己的问题......见下文.

c++ opengl textures

4
推荐指数
2
解决办法
6359
查看次数

无法释放共享上下文创建的纹理

我遇到了使用共享上下文的问题:

我有两个线程,每个都有一个上下文,比如Thr1(thread1)和Ctx1(Context1)以及Thr2和Ctx2.Ctx2与Ctx1共享创建.

然后,在Thr2中,我使用Ctx2创建一些纹理作为当前上下文,并进行一些渲染.之后,我销毁Ctx2并完成Thr2.

现在问题出现了:在我销毁Ctx2之后,在Ctx2下创建的纹理没有被释放(其中一些,不是全部).我使用gDebugger来配置我的程序,看到这些纹理没有被释放,并列在Ctx1下.

当我重复创建Thr2/Ctx2并创建纹理并破坏Thr2/Ctx2时,纹理变得越来越多,以及内存.

我尝试过的:

在销毁Ctx2之前删除Thr2中的纹理;

在Thr2中使Ctx1成为当前并尝试删除纹理,在Ctx2被破坏之前;

opengl textures shared

4
推荐指数
1
解决办法
579
查看次数

360观察者统一,纹理在顶部和底部出现翘曲

我正在制作一个360度的统一观察者,观看一张360度的照片,我曾经将一个立方体贴图连接到天空盒,而且效果很好.但是立方体贴图的重量迫使我切换到纹理.

所有360观察器教程都说要在其上放置一个带着色器的球体,然后将相机放入其中.当我这样做时,它不能很好地工作,因为当我看到顶部或底部时,我看到图像像这样弯曲:(椅子被假定看起来正常) 在此输入图像描述

当我使用天空盒时,它没有发生.

有人知道为什么会这样吗?

非常感谢你!

shader textures unity-game-engine photosphere google-cardboard

4
推荐指数
1
解决办法
3883
查看次数

渲染清晰的文本作为three.js纹理

我有一个512x512 SVG,我正在这样绘制到圆形平面上

    const texture = new THREE.TextureLoader().load('img/plane.svg');
?
    const material = new THREE.MeshBasicMaterial({
        transparent: true,
        map: texture,
        side: THREE.DoubleSide
    });
    const geometry = new THREE.CircleGeometry(5, 64);
    const plane = new THREE.Mesh(geometry, material);
    plane.rotation.x = -1;
    scene.add(plane);
Run Code Online (Sandbox Code Playgroud)

它工作正常,但是此SVG上面有一些文字,在three.js中呈现时确实很模糊:

webgl中模糊文本的屏幕截图

如何使它尽可能清晰?

作为参考,以下是SVG呈现为512x512 png的内容:

锋利的指南针

javascript textures three.js

4
推荐指数
1
解决办法
606
查看次数