小编Rab*_*d76的帖子

在OpenGL中有一种方法可以获得着色器程序使用的所有制服和属性的列表吗?

我想得到一个着色器程序对象使用的所有制服和属性的列表. glGetAttribLocation()&glGetUniformLocation()可以用来将字符串映射到一个位置,但我真正想要的是字符串列表而不必解析glsl代码.

注意:在OpenGL 2.0中glGetObjectParameteriv()被替换为glGetProgramiv().而enum是GL_ACTIVE_UNIFORMS&GL_ACTIVE_ATTRIBUTES.

opengl 3d shader glsl

42
推荐指数
3
解决办法
2万
查看次数

如何在OpenGL ES 2.0中获得"Glow"着色器效果?

我正在为iOS编写3D应用程序.我是OpenGL ES 2.0的新手,所以我还在自己编写基本的着色器.我真的需要根据纹理对我的一些模型实现"辉光"效果.

这是一个示例:

Bloom/Glow来自www.skillmanmedia.com/realbasic/bloomsnapshot.jpg .

我正在寻找OpenGL ES 2.0的代码示例.我在互联网上找到的大多数代码都是桌面OpenGL或D3D.

有任何想法吗?

shader opengl-es glsl ios opengl-es-2.0

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

Unexpected behavior after assignment of function object to function wrapper

I was searching a bug in an application, which I've finally fixed but didn't understand completely. The behavior can be reproduced with the following simple program:

#include <iostream>
#include <memory>
#include <functional>

struct Foo
{
  virtual int operator()(void) { return 1; } 
};

struct Bar : public Foo
{
  virtual int operator()(void) override { return 2; }
};

int main()
{
    std::shared_ptr<Foo> p = std::make_shared<Bar>();
    std::cout << (*p)() << std::endl;

    std::function<int(void)> f;
    f = *p;
    std::cout << f() << std::endl; …
Run Code Online (Sandbox Code Playgroud)

c++ object-slicing c++11

34
推荐指数
3
解决办法
931
查看次数

glLineStipple在OpenGL 3.1中已弃用

glLineStipple已在最新的OpenGL API中弃用.什么被取代?如果没有更换,我怎么能得到类似的效果?(我当然不想使用兼容性配置文件...)

opengl glsl line opengl-3 opengl-4

24
推荐指数
2
解决办法
9454
查看次数

OpenGL ES 2.0中的剪切平面

我需要在OpenGL ES 2.0中的剪切平面下剪切几百个对象,并且会欣赏那些对这个OpenGL子集更有经验的人的想法.

在OpenGL ES 1.x中有glClipPlane.在桌面上,您在着色器中有glClipPlane或gl_ClipDistance.这两者都不适用于OpenGL ES 2.0.似乎这种功能完全消失了2.0.

似乎唯一的方法是:A)在片段着色器中运行平面方程,或者B)编写一个非常复杂的顶点着色器,如果它们位于平面后面,则将它们定位在平面上.

(a)与glClipPlane相比会很慢,因为在顶点着色器之后和片段着色器之前进行"常规"剪辑,每个片段仍然必须被部分处理和丢弃.

(B)很难在着色器之间进行兼容,因为我们不能丢弃顶点,我们必须将它们与平面对齐并调整那些"切割"的属性.如果不在纹理中发送所有顶点并对其进行采样,则无法在着色器中的顶点之间进行插值,这将非常昂贵.通常,无论如何都可能无法正确地插入数据.

我还想过将近平面与剪切平面对齐,这将是一种有效的解决方案.

在渲染整个场景并检查深度失败后绘制平面也不起作用(除非您看起来接近垂直于平面).

对单个对象起作用的是将平面绘制到深度缓冲区,然后使用glDepthFunc(GL_GREATER)渲染对象,但正如预期的那样,当其中一个对象位于另一个对象后面时,它不起作用.我试图建立在这个概念的基础上,但最终得到了与阴影卷非常相似的东西,同样昂贵.

那我错过了什么?你会如何在OpenGL ES 2.0中进行平面剪裁?

opengl-es clipping opengl-es-2.0

21
推荐指数
3
解决办法
1万
查看次数

python/pycharm项目在调试模式下产生分段错误,但在运行模式下不会产生分段错误

奇怪的是,在调试模式下,如果脚本在通常会发生段错误(没有断点)的地方停止(通过断点),然后恢复,则不会发生段错误。很奇怪吧?

本项目使用pycharm和pygame。操作系统是 windows 10。该项目包含跨 8 个模块的约 1500 行代码,到目前为止调试效果很好。

正常运行脚本时(不在调试中)不会发生分段错误。这是发生段故障时终端的输出:

Fatal Python error: pygame_parachute: (pygame parachute) Segmentation Fault
Python runtime state: initialized

#some other threads here
Thread 0x0000490c (most recent call first):
... a long stack trace
Thread 0x00002c98 (most recent call first):
... a long stack trace
Thread 0x000048ec (most recent call first):
... a long stack trace

Current thread 0x000020d0 (most recent call first):
  File "C:\Users\Solaire\PycharmProjects\Game2\ai.py", line 60 in do_ai
  **File "C:/Users/Solaire/PycharmProjects/Game2/main.py", line 45 in <module>**
  File "C:\Program Files\JetBrains\PyCharm …
Run Code Online (Sandbox Code Playgroud)

python debugging segmentation-fault pycharm

20
推荐指数
1
解决办法
2615
查看次数

编译Cython扩展错误 - Pycharm IDE

非零退出代码(1): _ pydevd_bundle/pydevd_cython.c:13:20:致命错误:Python.h:没有此类文件或目录编译终止.错误:命令'x86_64-linux-gnu-gcc'以退出状态1失败

请帮我解决尝试在PyCharm中安装Cython的错误.

python compiler-errors cython pycharm python-3.x

18
推荐指数
1
解决办法
3614
查看次数

webgl着色器中无法实现变量数组索引?

正如标题所说,我不能vector_array[foo]在webgl顶点着色器中做(假设foo是范围内和整数),对吗?

纹理是最好的选择,还是有解决方法或更好的方法来模仿查找表?

glsl webgl

14
推荐指数
1
解决办法
9882
查看次数

如何在OpenGL Es 2.0中正确更新顶点数组?

当我在OpenGL 2.0中更新iOS上的顶点数组时,原始顶点数据停留在屏幕上 - 即第一次刷新是持久的(我向下发送到GPU的初始点集每帧渲染),但是第二次,第3,第4,...第n次冲洗似乎都覆盖了相同的记忆.

所以我在做:

vector<VertexType> rawDynamicData ;

glGenVertexArraysOES( 1, &va ) ;        CHECK_GL ;
glBindVertexArrayOES( va ) ;            CHECK_GL ;
glGenBuffers( 1, &vb ) ;                CHECK_GL ;
glBindBuffer( GL_ARRAY_BUFFER, vb ) ;   CHECK_GL ;

glBufferData( glBufferData(
  GL_ARRAY_BUFFER, //Specifies the target buffer object.
  rawDynamicData.size() * sizeof( VertexType ),
  &rawDynamicData[0],
  GL_DYNAMIC_DRAW  // I plan to update the data every frame
) ;  CHECK_GL ; 
Run Code Online (Sandbox Code Playgroud)

在随后的帧中,我只是再次打电话:

// update the data
glBufferData( glBufferData(
  GL_ARRAY_BUFFER, //Specifies the target buffer object.
  rawDynamicData.size() * sizeof( VertexType …
Run Code Online (Sandbox Code Playgroud)

vertex-buffer ios opengl-es-2.0

11
推荐指数
1
解决办法
5939
查看次数

MFC CComboBoxEx GDI资源泄漏

我有一个非常简单的MFC对话框,只有一个CComboBoxEx控件.

.RC

IDD_MFCAPPLICATION1_DIALOG DIALOGEX 0, 0, 160, 200
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
EXSTYLE WS_EX_APPWINDOW
CAPTION "MFCApplication1"
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
    CONTROL  "", IDC_COMBO1, "ComboBoxEx32", CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP, 10, 20, 140, 250
END
Run Code Online (Sandbox Code Playgroud)

c ++源代码

class CMFCApplication1Dlg : public CDialogEx
{
public:
    CMFCApplication1Dlg(CWnd* pParent = NULL);

    virtual void DoDataExchange( CDataExchange* pDX );

    CComboBoxEx m_ctrlComboEx1;

    virtual BOOL OnInitDialog();
    DECLARE_MESSAGE_MAP()
};
Run Code Online (Sandbox Code Playgroud)
CMFCApplication1Dlg::CMFCApplication1Dlg(CWnd* …
Run Code Online (Sandbox Code Playgroud)

c++ windows winapi mfc visual-studio

11
推荐指数
1
解决办法
337
查看次数