小编Dav*_*rey的帖子

PHP获取相对于站点根目录的文档路径

我试图在包含所有CSS链接信息的头文件中链接一个单独的php文档,这样如果我想更改网站的设计,我只需要在一个位置更改css路径(特别是对于各种配色方案)当我添加更多方案时,我可以将它们放在这个文件中的switch语句中,而不是遍历每一页.

我正在尝试编写代码,以便无论在哪个服务器(我的本地测试服务器或远程站点服务器)上运行它都可以工作,而无需更改任何路径信息.

从我正在阅读的内容看起来似乎$_SERVER['DOCUMENT_ROOT']是找到网站基本文件夹路径的最佳方式,这样我就可以找到服务器文件夹/ css文件,无论页面文件位于何处.

这是我如何设置它的一个例子:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>

<!--Meta Information-->

<!--CSS Info-->
<?php 
    require_once("styles/cssstyle.php");
?>

<title></title>
</head>
<body>

<!--pushes site down from top of screen -->
<div id="topmargin"></div> 

<!-- sets div for site content (puts in middle) -->
<div id="_body">          

    <div id="banner">                        
        <div class="logo"></div>      
        <div class="text"></div>
        <div class="bannerstrip"></div>
    </div>

    <!--portion for site navigation-->
    <div id="navigation">                               
        <ul class="navlinks">                            
            <li><a href="index.php">home</a></li>
        </ul>
    </div>

    <!--Holds all site usable/readable content-->
    <div id="leftwindow">                              

    </div>

    <div id="rightwindow">

    </div> …
Run Code Online (Sandbox Code Playgroud)

html css php

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

Netbeans PHP函数参数提示

我环顾四周,找到了解决相关问题的事情,但没有找到具体的问题.

我正在使用Netbeans,它真的在我身上发展,但是当我去使用一个函数时,"intellisense"提示会正确弹出,但是一旦我输入参数,代码提示会显示函数签名并且它的参数消失了.

这会伤害我的工作效率,因为我没有记忆中的签名,而且我总是在我打字的时候引用它.

对于Netbeans来说这是正常的还是我可以通过某种方式使函数提示保持不变直到我关闭函数签名的括号?

更新: 我刚发现Ctrl + P会显示参数方法,是否有某种方法可以自动显示而不是经常输入Ctrl + P?

php ide netbeans code-completion code-hinting

7
推荐指数
2
解决办法
2734
查看次数

Unity 私有唤醒更新和启动方法如何工作?

Unity如何在后台调用Awake、Update和Start方法?对我来说,它们没有访问修饰符表明它们是私有方法,并且它们不使用 new 或 override 之类的东西,那么 Unity 框架如何找到调用它们的方法呢?

在一个相关问题上,没有使用虚拟方法有什么特殊原因吗?

编辑:对于那些不熟悉 Unity 脚本的人来说,它们通常是这样显示的:

public class MyClass : MonoBehaviour{
   void Start(){
   }

   void Awake(){
   }

   void Update(){
   }
}
Run Code Online (Sandbox Code Playgroud)

我不明白的是,框架如何找到并自动调用每个脚本的这些方法,而从表面上看,它们看起来只是私有方法

c# design-patterns unity-game-engine

7
推荐指数
1
解决办法
3575
查看次数

OpenGL处理​​多个对象

我在理解如何使用OpenGL处理​​/渲染多个对象时遇到了一些困难.我环顾四周,在谷歌和OpenGL红皮书中找到答案,围绕着我想弄清楚的东西跳舞,但我需要看看我是否有正确的想法.

我的第一个想法是我应该分别处理X,Y和Z的平移和旋转变量的位置数据.将单个网格存储在该类的静态VBO中,然后为我想渲染的每个实例执行for-next循环

  • 加载标识
  • 转换为特定对象的位置/旋转
  • 使用drawarrays在该位置渲染网格
  • 循环到下一个对象并为每个对象重复上述操作

为每个帧更新处理这样的转换是否会显着影响性能?

有人提到的另一种方法是在一个VBO中粘贴每个顶点的所有位置数据,然后用一次调用渲染它.在这个方法中,我假设"创建"一个对象,我需要通过一个函数来处理每个顶点的位置数据,该函数将获取其本地坐标(通过静态数组)并将该特定对象的位置数据添加到顶点,然后把它存放在VBO中?如果是这种情况,我将如何处理轮换?

第三个想法是在对象的每个实例中存储一个4x4矩阵来保存平移/旋转信息,然后当我去渲染时,我只是加载该对象的矩阵,从单个VBO中绘制网格,然后加载下一个对象的矩阵,从同一个VBO中抽取等等....

最后,我看到有人建议为每个对象都有一个VBO,并为每个实例调用drawarray.这种方式对我来说似乎效率很低,让我想知道如果你为每个网格调用VBO,那么VBO会是什么意思.看起来像立即模式(我理解它被折旧)会更快,因为你没有为每个单个对象创建和绑定VBO的开销.

处理/渲染多个对象的任何/所有这些方法是否有效?如果是这样,每种方法的优点和缺点是什么?

最有意义的方法是每个网格具有单个VBO的方法,然后根据更新转换它们,或者每次更新加载每个对象的矩阵并以此方式呈现.我是OpenGL和图形渲染的新手,所以我试图完全理解处理渲染多个对象所需信息的最佳方法.

opengl rendering transformation object matrix

6
推荐指数
1
解决办法
7852
查看次数

序列化和反序列化多个对象

我在做它创建于指定位置的文件的错误日志库,然后保存在该文件中的错误信息,然后可以通过,我打算在这个库一起写一个单独的塔斯克程序读取.

我保存它的方式是二进制格式(使用BinaryFormatter()FileStream()),我将一个名为ErrorEntry的类序列化到文件中并将其附加到文件的末尾.这意味着我有一系列的ErrorEntries背靠背.我没有它作为列表,因为似乎不必将所有信息从文件读入列表,添加条目,然后将其保存回文件并转储资源.仅需要执行单个写入命令似乎更有效,并且只将每个命令存储为自己的序列化对象.

我的问题是我可以找到几个关于序列化列表或单个对象的例子,但没有关于多个 - 但是单独 - 对象的内容.虽然我想将它们保存为单个对象,但是当我加载它们时,我想要读取该对象并将该系列作为该对象的列表返回.我想有类似的东西

while(!EOF)
{
     //deserialize each object
     //add individual object to a list
}
//return the list of objects
Run Code Online (Sandbox Code Playgroud)

我如何从单个文件中反序列化每个对象?它是否有一个内部标记,以上工作,我只需要检测它是否是文件的结尾,还是我需要做其他事情来阅读它们?

c# serialization file object

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

我什么时候会使用浅拷贝?

我理解浅拷贝和深拷贝之间的区别,但我真的不明白在什么情况下会首选浅拷贝。

如果我没有记错的话,浅复制会创建值类型的新副本,并简单地复制引用类型的地址,以便它们指向同一个对象,对吗?为什么我想要这种效果?

reference value-type deep-copy shallow-copy

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

结构布局优化

字节优化给你带来多大的性能提升(使它们成为8,32,64等的倍数......)?

这是一个示例结构:

[StructLayout(LayoutKind.Explicit)]
public struct RenderItem
{
   [FieldOffset(0)] byte[] mCoordinates = new byte[3]; //(x,y,z)
   [FieldOffset(3)] short  mUnitType;            

}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,做这样的事情有多重要:

[StructLayout(LayoutKind.Explicit)]
public struct RenderItem
{
   [FieldOffset(0)] byte[] mCoordinates = new byte[3]; //(x,y,z)
   [FieldOffset(4)] short  mUnitType;
   [FieldOffset(6)] byte[] mPadding = new byte[2];     //make total to 8 bytes

}
Run Code Online (Sandbox Code Playgroud)

我敢肯定它是那些"随尺寸扩展"的东西之一,所以特别是我很好奇这个结构会被用来创建一个VertexBuffer对象大约150,000次:

//int objType[,,] 3 dimensional int with object type information stored in it

int i = 0;
RenderItem vboItems[16 * 16 * 16 * 36]  //x - 16, y - 16, z - 16, …
Run Code Online (Sandbox Code Playgroud)

c# opengl optimization structure

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

调整控制台的事件大小

因此,我认为窗口调整大小事件将通过winproc来进行,我可能会弄错了,希望获得有关控制台调整大小事件的通知。

我想在调整大小时最大化控制台缓冲区,并在完成后实质上将其缩小到窗口大小,从而防止由于缓冲区小于窗口而导致溢出错误。

c# console events message wndproc

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

c ++中的atan问题

在我遇到问题之前,我想指出一些事情:1)我知道在cmath库中已经有一个atan2函数,这纯粹是一个练习和我自己的练习,2)我知道代码不占0.

好吧,所以tan(theta)= y/x,其中y和x是平面上的坐标......这意味着:

四元组和第四组中的theta = atan(y/x),四元组和第三组中的theta = atan(y/x)+ 180

那么为什么当我使用以下代码时:

float atan(float y, float x)
 {
 float result = 0.0f;

if (x > 0) //quads I and IV if x is positive
 { 
result = atanf(y/x);
 }
 else if (x < 0)
 {
 result = atan(y/x) + 180; //quads II and III if x is negative
 }

return result;

 }
Run Code Online (Sandbox Code Playgroud)

它吐了我垃圾吗?例如,对于坐标(-4,4),它给出了结果:179.215,它应该是135:

atan(4/-4)= -45度+ 180度= 135度

但正在发生的是计算

atan(4.0f/-4.0f)= -0.785398 + 180度= 179.215.

我在这里错过了一些步骤吗?

c++ math logic

0
推荐指数
1
解决办法
2559
查看次数

C++ wParam和Lparam混淆

我知道wParam和lParam是(32位我相信)特定于当时传递的消息的信息位,但是有什么方法可以告诉每条消息放入两者中的内容吗?

我在某处读到wParam是16位而lParam是32位,但它仍然没有真正解释我应该期待看到的内容,或者至少我应该期望看到哪些变量.我已经看到了一些消息示例使用lParam,以及使用wParam的其他消息示例,以及其他两个示例.

例如,我看到keydown使用wParam接收特定键,但lParam用于LButtondown,上面的16是y,下面的16是x.一个特别应该在lParam中的原因是有意义的(因为它需要32位),但我怎么能找出其他消息发送哪个,以及它们中的内容是什么?

(对不起,我想我可能在那次轻微的咆哮中重复了几次我的问题)

c++ winapi

0
推荐指数
1
解决办法
2609
查看次数

能够多次附加/链接着色器有什么意义?

有些东西我对OpenGL并不完全了解:根据我正在阅读的所有内容,通过将着色器编译得足够长以将它们附加到程序中来获得最佳性能,然后建议您将着色器本身删除为可用内存,只需跟踪程序,直到删除它为止.

所以我的问题是:如果上述情况属实,那么在创建程序后能够附加着色器并重新链接程序的目的是什么?在场景创建期间创建第二个着色器程序并在它们之间交换而不是分离/附加和重新链接程序是不是更有效?

opengl performance shader

0
推荐指数
1
解决办法
140
查看次数