小编Ken*_*ron的帖子

__devexit在函数声明中的含义是什么?

我看过一个司机

static void __devexit rtsx_remove(struct pci_dev *pci)
Run Code Online (Sandbox Code Playgroud)

__devexit在函数定义的上下文中意味着什么?我见过的其他函数最多static只有一个返回类型.

c function

10
推荐指数
1
解决办法
898
查看次数

libgdx纹理过滤器和mipmap

当我尝试在LibGDX中使用mipmap过滤时,不会出现任何图像.

我是LibGDX的新手,我有一个简单的2D场景,有三个旋转的缩放圆圈.为了对它们进行反混淆,我想使用线性过滤.对于建议,我查看了这篇文章,该文章说,对于大规模缩放的图像,可以使用mipmap来提高速度或质量.

第一个意想不到的表现是,尽管我的所有图像都按比例缩小,但我只会看到一个线性过滤器,如果magFilter是线性的.换一种说法:

此代码将显示缩小图像的线性过滤器:

parentTexture.setFilter(TextureFilter.Nearest, TextureFilter.Linear);
Run Code Online (Sandbox Code Playgroud)

这个代码不会:

parentTexture.setFilter(TextureFilter.Linear, TextureFilter.Nearest);
Run Code Online (Sandbox Code Playgroud)

这似乎与libGDX函数相反:

void com.badlogic.gdx.graphics.Texture.setFilter(TextureFilter minFilter, TextureFilter magFilter)
Run Code Online (Sandbox Code Playgroud)

这不会打扰我,除了它表明libgdx是错误的(不太可能),文章是错误的(不太可能),或者我不理解纹理过滤器.当我尝试使用mipmap过滤器时,后者似乎特别有可能.

此代码不会显示任何内容

parentTexture.setFilter(TextureFilter.MipMapLinearLinear, TextureFilter.Linear);
Run Code Online (Sandbox Code Playgroud)

此代码显示,但具有最近的过滤

parentTexture.setFilter(TextureFilter.Linear, TextureFilter.MipMapLinearLinear);
Run Code Online (Sandbox Code Playgroud)

任何解释我错的地方都将不胜感激.我在其他地方搜索过,但是libGDX中的纹理过滤器非常具体,所以除了文章之外,我还没有找到太多帮助.

java textures mipmaps libgdx

8
推荐指数
2
解决办法
1万
查看次数

如何在C++中为运算符分配std :: function?

template<class Key, class Value>
AVLTree<Key,Value>::AVLTree(){
    this->lessThan = Key::operator<;
}
Run Code Online (Sandbox Code Playgroud)

此代码应该使std::function<bool(Key, Key)> lessThan字段默认等于键的<运算符.但是,当我尝试这个时AVLTree<int,int>,我得到:

error: ‘operator<’ is not a member of ‘int’
Run Code Online (Sandbox Code Playgroud)

我是格式化这个错误,还是在C++中这是不可能的?

c++ templates operators function-object c++11

2
推荐指数
1
解决办法
206
查看次数

为什么我的 OpenGL Texutre 渲染变暗?(RGB值是平方的)

我一直在使用glow 在 Rust 中进行一些 opengl 渲染。进展顺利,但是渲染到纹理与渲染到图像给了我不同的结果。我知道一个简单的解决方法,但我只是不明白。

在此输入图像描述

右侧的图像直接渲染到屏幕上,而左下角的图像是通过使用相同的绘制函数(将像素数据传递到 egui 的 ColorImage)将相同的网格渲染到相同大小的纹理来创建的。正如您所看到的,它太暗了,当我将像素数据保存到文件(使用 Rust 的 Image crate)时也是如此。

但是,如果渲染中通道的值已满,则输出中的通道值也已满,就像在转换为 RGB8 之前将 RGB 值在 0-1.0 范围内进行平方一样。果然,我尝试在像素数据 ( flipped_buffer[i1] = ((buffer[i2] as f32 / 255.).sqrt() * 255.).round() as u8;) 中撤消这一点,它开始看起来是正确的!

所以为什么?这是一个非常具体的事情,我什至可以想象它是映射颜色的一种有用的方式(因为眼睛比亮的值更好地区分较暗的值),但为什么会发生在这里?

写入纹理的代码基于此处的教程,但使用 Rust 中的发光而不是 C/C++,并使用 RGBA 而不是 RGB。

纹理创建摘录:

let gl_texture = self.gl.create_texture()?;
self.gl.bind_texture(glow::TEXTURE_2D, Some(gl_texture));
self.gl.tex_image_2d(glow::TEXTURE_2D, 0, glow::RGBA as i32, width as i32, height as i32, 0, glow::RGBA, glow::UNSIGNED_BYTE, None);
self.gl.tex_parameter_i32(glow::TEXTURE_2D, glow::TEXTURE_MAG_FILTER, glow::NEAREST as i32);
self.gl.tex_parameter_i32(glow::TEXTURE_2D, glow::TEXTURE_MIN_FILTER, glow::NEAREST as i32); …
Run Code Online (Sandbox Code Playgroud)

opengl rust egui

2
推荐指数
1
解决办法
255
查看次数

标签 统计

c ×1

c++ ×1

c++11 ×1

egui ×1

function ×1

function-object ×1

java ×1

libgdx ×1

mipmaps ×1

opengl ×1

operators ×1

rust ×1

templates ×1

textures ×1