小编Spo*_*oky的帖子

如何在OpenGL中使纹理透明?

我试图在谷歌上研究这个问题,但似乎没有任何连贯的简单答案.这是因为它不简单,还是因为我没有使用正确的关键字?

然而,这是我迄今取得的进步.

  1. 创建了8个顶点以形成2个正方形.
  2. 创建具有200位alpha值的纹理(因此,大约80%透明).
  3. 为每个正方形指定相同的纹理,正确显示.
  4. 注意到当我使用255 alpha的纹理时,它看起来更亮.

init类似于以下内容:

glClearColor(0.0, 0.0, 0.0, 0.0);
glShadeModel(GL_FLAT);
glEnable(GL_DEPTH_TEST);

glEnable(GL_CULL_FACE);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glGenTextures(1, textureIds);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);

int i, j;
GLubyte pixel;
for (i = 0; i < TEXTURE_HEIGHT; i++)
{
    for (j = 0; j < TEXTURE_WIDTH; j++)
    {
        pixel = ((((i & 0x8) == 0) ^ ((j & 0x8) == 0)) * 255);
        texture[i][j][0] = pixel;
        texture[i][j][1] = pixel;
        texture[i][j][2] = pixel;
        texture[i][j][3] = 200;
    }
}

glBindTexture(GL_TEXTURE_2D, textureIds[0]);

glTexParameterf(GL_TEXTURE_2D, …
Run Code Online (Sandbox Code Playgroud)

c++ opengl textures opacity

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

OpenGL alpha 值使纹理更白?

我正在尝试加载具有 RGBA 值的纹理,但 alpha 值似乎只是使纹理更白,而不是调整透明度。我听说过 3D 场景有这个问题,但我只是使用 OpenGL 来处理 2D。我能解决这个问题吗?

我正在初始化 OpenGL

glViewport(0, 0, winWidth, winHeight);
glDisable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisable(GL_DEPTH_TEST);
glClearColor(0, 0, 0, 0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, winWidth, 0, winHeight); // set origin to bottom left corner
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glColor3f(1, 1, 1);
Run Code Online (Sandbox Code Playgroud)

截屏: 那个褪色的点图像应该是半透明的。黑色部分应该是完全透明的。正如您所看到的,它后面有一个图像没有显示出来。

生成该纹理的代码相当冗长,因此我将描述我所做的事情。这是一个 40*30*4 的 unsigned char 类型的数组。每第 4 个字符设置为 128(应该是 50% 透明,对吧?)。

然后我将其传递到此函数中,将数据加载到纹理中:

void Texture::Load(unsigned char* data, GLenum format) {
    glEnable(GL_TEXTURE_2D);
        glBindTexture(GL_TEXTURE_2D, _texID);
        glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, _w, _h, format, GL_UNSIGNED_BYTE, data);
    glDisable(GL_TEXTURE_2D);
}
Run Code Online (Sandbox Code Playgroud)

而且...我想我刚刚发现了问题。使用以下代码初始化全尺寸纹理:

glEnable(GL_TEXTURE_2D); …
Run Code Online (Sandbox Code Playgroud)

opengl textures

5
推荐指数
1
解决办法
3829
查看次数

将对象传递给UITypeEditor

我目前希望使用PropertyGrid来允许用户编辑我的一些类,但是我已经碰到了将对象传递给他们使用的UITypeEditor的墙.当用户按下下拉列表时,我想显示已加载纹理的列表框以供选择,如果他们想要使用应用程序尚未加载的纹理,他们可以单击按钮从文件对话框中选择一个.如果我在这里没有意义的形式的模拟:

下拉图片.

我的问题:要填充列表框,我需要访问管理UITypeEditor资源列表的类.

现在我已经为我自己的类解决了这个问题,给他们一个关于创建它们的管理对象的参考.在UITypeEditor中,我然后使用该引用来访问我需要的内容.但是,对于我没有编写的类,例如XNA Texture2D类,我不能这样做.

以下是我正在使用的类:

class StaticGeometryChunk
{
    // Geometry data to draw with. Contains a reference to its managing 
    // class for use in its UITypeEditor.
    public GeometryData { get; set; }
    ....
}

class Material
{
    // These are XNA classes. I can't just add a reference to its managing 
    // class (I think?).
    public Texture2D Texture1 { get; set; }
    public Texture2D Texture2 { get; set; }
    ....
}
Run Code Online (Sandbox Code Playgroud)

我一直在看我的选择,他们似乎是:

  1. 使管理类静态.

我真的不想这样做.有几个管理类,因为每个资源的加载方式不同.还有一些类需要在这些类之前创建并传入.

  1. 使管理类单身.

我也不想这样做.这似乎是一种快速而肮脏的方式来"隐藏"问题而不是"解决"它.我也可能希望将来有一些管理类可供单身人士消除.

  1. 创建一个包装类,它包含对管理类及其目标(例如XNA …

c# propertygrid uitypeeditor

5
推荐指数
1
解决办法
3900
查看次数

Client Profile应用程序先决条件

关于Client Profile安装的最后一个问题.我下载了Microsoft .NET Framework Client Profile Online Installer,因为我们想将它放在安装CD中,因为我们的最终用户可能没有.net framework 3.5或Internet.所以我们希望能够处理这两种情况.

在先决条件中,我能够选择文件的位置,但我不知道它应该在哪里.我希望能够以某种方式放置CD的路径,例如d:\ ProductName\Prerequisites\DotNetFx35ClientSetup.exe,以便它可以获取它并从那里安装它.有没有人知道如何实现这一目标?

谢谢.

这是先决条件窗口:

替代文字

.net installation .net-client-profile

5
推荐指数
1
解决办法
1961
查看次数

为什么HttpPostedFile不像广告和缓冲区下载到磁盘而不是内存?

我使用标准HTML <input>控件发布多部分表单数据将大文件上载到ASP.NET服务器.这是一个ASP.NET MVC应用程序.

根据MSDN,HttpPostedFile该类缓冲到磁盘开箱即用:

"文件以MIME multipart/form-data格式上传.默认情况下,大于256 KB的所有请求(包括表单字段和上传文件)都缓冲到磁盘,而不是保存在服务器内存中."

我想这意味着,当我访问HttpPostedFileBase我的控制器,当我访问HttpPostedFileBaseInputStream财产,我可以写某个文件缓冲区,而不必担心运行内存的服务器,这显然是一个不可行的解决方案.

这里有一些关于我如何处理每个传入文件的伪代码HttpPostedFileBase.

for(var i = 0; i< Request.Files.Count;i++)
{
    var fileBase = Request.Files[i];
    if (fileBase.ContentLength == 0)
    {
        continue;
    }

    // One thread per file
    ThreadPool.QueueUserWorkItem(state =>
    {
        // Read from fileBase.InputStream
    }, 
    null);
}
Run Code Online (Sandbox Code Playgroud)

我的web.config的httpRuntime块如下所示:

<httpRuntime
  executionTimeout="1200"
  requestLengthDiskThreshold="2097151"
  maxRequestLength="2097151"
  useFullyQualifiedRedirectUrl="false"
  minFreeThreads="8"
  minLocalRequestFreeThreads="4"
  appRequestQueueLimit="100" />
Run Code Online (Sandbox Code Playgroud)

我的实现工作,多个文件按预期上传,除了服务器消耗缓冲整个有效负载所需的相同内存量.我必须假设InputStream正在缓冲所有内容.当我上传的文件多于我的内存时,它可以预测会崩溃OutOfMemoryException.这是上传800mb文件时内存峰值的图像.

替代文字

我知道我可以使用Flash/Silverlight小部件或编写自定义HttpModule来截取上传并自己处理它们,但是如果HttpPostedFileMSDN说它做了什么(或者我做错了),当前的要求将完美无缺.

asp.net-mvc upload httppostedfilebase

5
推荐指数
1
解决办法
1751
查看次数

Xcode变量着色

当我输入新的实例变量时,它们显示为白色.为了将它们变为绿色,我在分号之间做了一个空格/退格.是否有一个XCode秘密自动浏览我的所有类并识别它错过的变量?

类似的问题也发生在整个代码中使用的橙色#define变量.

颜色截图

更新:此问题似乎在雪豹的xcode 3.2中得到解决.

xcode

5
推荐指数
1
解决办法
811
查看次数

为什么我收到此Javascript运行时错误?

我的网页上有以下JavaScript ...

64    var description = new Array();
65    description[0] = "..."
66    description[1] = "..."
...
78    function init() {
79        document.getElementById('somedivid').innerHTML = description[0];
80    }
81
82    window.onload = init();
Run Code Online (Sandbox Code Playgroud)

在Microsoft Internet Explorer中,它会导致以下错误...

发生了运行时错误.
你想调试吗?

行:81
错误:未实现

javascript运行时错误

第79行按预期执行.

如果第79行被注释掉,它仍会抛出错误.

如果我注释掉第82行,那么该函数不会执行,也没有错误.

html javascript internet-explorer

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

如何将数据写入CakePHP中HABTM连接表的HABTM关联?

我正在尝试使用以下结构保存数据: 替代文字

如您所见,用户体验表之间存在HABTM关联.另外在experience_userstags之间一个HABTM .我创建了以下表单:

<?php echo $form->create('Experience', array('action' => 'addClassic'));?>
    <?php
    echo $form->input('Experience.date', array('dateFormat' => 'DMY'));
    echo $form->input('Experience.time', array('timeFormat' => '24', 'empty' => array(-1 => '---'), 'default' => '-1'));
    echo $form->input('Experience.name');
    echo $form->input('ExperiencesUser.1.note');
    echo $form->input('ExperiencesUser.1.rating'); 
    //echo $form->input('Tags.Tags', array('multiple' => 'multiple', 'options' => $tags));
    //echo $form->input('ExperiencesUser.1.Tags', array('multiple' => 'multiple', 'options' => $tags));
    //echo $form->input('ExperiencesUser.1.Tags.Tags', array('multiple' => 'multiple', 'options' => $tags));
    echo $form->input('ExperiencesUser.1.confirmed', array('type' => 'hidden', 'value' => '1'));

    echo $form->input('ExperiencesUser.1.user_id', array('type' => …
Run Code Online (Sandbox Code Playgroud)

cakephp has-and-belongs-to-many

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

CGAL:错误的Delaunay结果?

我的Delaunay三角测量在1000个均匀随机点上的结果看起来并不正确(见图).有些点似乎属于异常高数量的三角形......有什么想法吗?

替代文字

细节:CGAL 3.4,Windows XP

这是我使用的类型:

typedef CGAL::Exact_predicates_inexact_constructions_kernel K; 
typedef CGAL::Triangulation_2<K>         Triangulation; 
typedef Triangulation::Point             Point; 
Run Code Online (Sandbox Code Playgroud)

显示如下:

delaunay_c::Triangulation::Edge_iterator eit = T.edges_begin(); 
delaunay_c::Triangulation::Edge_iterator end = T.edges_end(); 
for(;eit != end; ++eit) 
{ 
    delaunay_c::Triangulation::Segment s = T.segment(eit); 
    line.m_a = delaunay_c::convert(s.source()); 
    line.m_b = delaunay_c::convert(s.target()); 
    line.draw(); 
} 
Run Code Online (Sandbox Code Playgroud)

函数转换只是从CGAL Point转换为另一种点格式

编辑:按照选择的答案,我只是将三角测量改为delaunay_triangulation:

typedef CGAL::Delaunay_triangulation_2<K>         Triangulation;
Run Code Online (Sandbox Code Playgroud)

它给了: 替代文字

c++ cgal

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

Delphi中丰富的GUI应用程序

我想在Delphi中创建一个具有丰富UI元素且没有VCL的应用程序(除了TForm).每个组件(按钮,列表等)都需要支持完整的每像素alpha,并且无需任何代码即可轻松创建.它应该是可剥皮的并且能够产生类似于adobe air应用的结果.

我尝试过使用GR32(Graphics32),但TImage32的每个实例都占用了太多内存.

您是否知道Delphi 2009的任何框架或组件可以创建一组用于创建丰富UI应用程序的组件?

干杯!

编辑:我的应用程序的当前alpha版本如下所示: 替代文字

我希望得到类似的结果但不使用每个组件的TImage32(按钮,标签,面板等......)

delphi user-interface

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